我有这个对象(删除了不相关的属性):
HFAppointment; id: 0xd8ec6f0 <x-coredata://2AA46AB1-11AF-431B-9289-63DEFCDAFED6/HFAppointment/p2> ; data: {
cost = 60;
deleted = 0;
})
除了这个简单的代码:
[appointment setDeleted:[NSNumber numberWithInt:1]];
[appointment setCost:[NSNumber numberWithInt:1]];
问题是运行此代码后我得到:
HFAppointment; id: 0xd8ec6f0 <x-coredata://2AA46AB1-11AF-431B-9289-63DEFCDAFED6/HFAppointment/p2> ; data: {
cost = 1;
deleted = 0;
})
NSManagedObject
子类如下所示:
部首:
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface HFAppointment : NSManagedObject
@property (nonatomic, retain) NSNumber * cost;
@property (nonatomic, retain) NSNumber * deleted;
@end
实现:
#import "HFAppointment.h"
@implementation HFAppointment
@dynamic cost;
@dynamic deleted;
@end
就是这样,我没有为该课程定制的定制者或吸气剂。我在整个项目中搜索了deleted
的出现,它只在谓词中使用,没有其他类使用该setter。
我尝试删除并重新创建NSManagedObject
子类但没有成功。我也尝试从模拟器中删除应用程序,并做了一个干净的构建无济于事。
对于记录,deleted
属性如下所示(更改为整数32和/或删除默认值和/或使用int32_t
而不是NSNumber
无效):
有什么想法吗?
答案 0 :(得分:3)
在无休止地寻找无数个小时之后,事实证明解决方案很简单,虽然模糊不清。
This article让我发现deleted
显然是CoreData中的保留关键字。只需重命名属性即可解决问题。我找不到这些关键字的列表来备份我的答案,所以如果有人知道这样的列表,请随时发布。
NSPropertyDescription documentation确实提到了optional
,transient
和readOnly
,但这就是我能找到的所有内容,而且不能明确表示不得使用它们。< / p>
令人讨厌的部分是XCode从未发出任何与此相关的警告,所以它真的是猜测工作。