我正在尝试对NSManagedObject子类进行排序的基本测试。我设置了一个基本子类“TestClass”,它有两个属性:stringField
和numberField
。他们使用标准的Obj-C 2.0访问协议:
@interface TestClass : NSManagedObject
@property (retain) NSString *stringField;
@property (retain) NSNumber *numberField;
@end
@implementation TestClass
@dynamic stringField;
@dynamic numberField;
@end
当我尝试获取此实体的实例时,我可以根据任一属性进行提取。但是,如果我使用排序描述符,则numberField
被认为不符合KVC。
在模型中,我将numberField
设置为Int64,但我很困惑。我认为包装器(NSNumber)会处理KVC问题。我需要做些什么来完成这项工作?
答案 0 :(得分:2)
一些初始的“计算机是否打开?” - 输入问题:
numberField
吗?numberField
是瞬态属性吗?这些是我能想到的常见问题,在使用排序描述符获取时可能会导致此类错误,尤其是第一个。
此外,这不会影响KVC,但属性的属性声明应该是(copy)
而不是(retain)
,因为它们是符合NSCopying
协议的“值”类并且可能有可变的子类。您不希望传递可变字符串并在Core Data下面改变它。 (是的,Cocoa中没有NSMutableNumber或NSMutableDate,但这并不妨碍创建MyMutableNumber或MyMutableDate子类......)