在CoreData Model中,我有一个名为TestEntity的实体。该实体有一个名为'deleted'的属性,其类型为boolean。
如果我使用Xcode为这个实体生成一个自动NSManagedObject子类,生成的类头看起来像这样:
@interface TestEntity : NSManagedObject
@property (nonatomic, retain) NSNumber * deleted;
@end
我理解为什么NSNumber用于布尔属性。这与以前没有变化。问题是它现在向我显示了2个警告:
我不想使用原始类型。任何想法如何摆脱这些警告? 这可能是我正在使用的Xcode 6 beta 7(iOS 8 beta 5)的错误。已提交错误报告,因为使用Xcode自动生成的类在任何情况下都不会导致编译器警告。
答案 0 :(得分:8)
您设法使用名称与NSManagedObject的现有方法冲突的属性。
解决方案:更改属性的名称。不要将其称为“已删除”,而是将其称为其他内容
答案 1 :(得分:2)
我去了NSManagetObject头文件,似乎Apple正在以这种方式使用它。
// state - methods can be used through KVC, for example for enabling/disabling widgets based on the state of the object
@property (nonatomic, getter=isInserted, readonly) BOOL inserted;
@property (nonatomic, getter=isUpdated, readonly) BOOL updated;
@property (nonatomic, getter=isDeleted, readonly) BOOL deleted;
尝试更改实体的属性名称,我的猜测是它不会成为轻量级核心数据迁移案例。请务必在提交代码前进行检查。
我不知道Apple是否只是这样做但我在iOS 7中没有收到警告。我们希望这是来自Apple的一个信号让我们知道他们正在修复所有问题核心数据问题:)