NSManagedObject子类(CoreData)中的数字符合KVC

时间:2009-03-20 20:50:06

标签: core-data numbers key-value-coding

我正在尝试对NSManagedObject子类进行排序的基本测试。我设置了一个基本子类“TestClass”,它有两个属性:stringFieldnumberField。他们使用标准的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问题。我需要做些什么来完成这项工作?

1 个答案:

答案 0 :(得分:2)

一些初始的“计算机是否打开?” - 输入问题:

  1. 您的模型是否指定您的实体的托管对象类是TestClass?
  2. 在排序描述符中指定密钥时,您确定拼写为numberField吗?
  3. 模型中的numberField是瞬态属性吗?
  4. 这些是我能想到的常见问题,在使用排序描述符获取时可能会导致此类错误,尤其是第一个。

    此外,这不会影响KVC,但属性的属性声明应该是(copy)而不是(retain),因为它们是符合NSCopying协议的“值”类并且可能有可变的子类。您不希望传递可变字符串并在Core Data下面改变它。 (是的,Cocoa中没有NSMutableNumber或NSMutableDate,但这并不妨碍创建MyMutableNumber或MyMutableDate子类......)