我有几个NSManagedObject的子类。它们都是用这样的代码实例化的:
MeasurementDescriptor *descriptor = (MeasurementDescriptor *)[NSEntityDescription
insertNewObjectForEntityForName:@"MeasurementDescriptor"
inManagedObjectContext:context];
或者像这样:
Experiment *experiment = (Experiment *)[NSEntityDescription
insertNewObjectForEntityForName:@"Experiment"
inManagedObjectContext:context];
但奇怪的是(来自上面的代码)
NSLog(@" descriptor's class = %@", NSStringFromClass([descriptor class]));
打印出'NSManagedObject',而
NSLog(@" experiment's class = %@", NSStringFromClass([experiment class]));
打印出“实验”。
有谁知道为什么会这样?与我的其他NSManagedObject子类不同,MeasurementDescriptor没有ivars(不包括其Core Data属性)。添加伊娃并没有改变任何东西。同样,MeasurementDescriptor是唯一没有“关系”属性的NSManagedObject子类。也许这说明了这种奇怪...... ???
答案 0 :(得分:2)
唯一的解释是您的MeasurementDescriptor
子类实际上并不为代码所知。最常见的原因是:
Class
属性设置为正确的类。 使用Core Data很容易,因为如果它找不到专用的子类,它就不会抱怨但只返回用实体的属性键名初始化的通用NSManagedObject。