CoreData:基类属性不是持久的

时间:2013-11-29 11:09:46

标签: objective-c core-data derived-class core-data-migration object-persistence

我创建了一个带有3个参数的简单基类(OBJECT1,见下文)并实现了一个核心数据模型,其中有一个实体派生自这个类,有一个属性(顺序)。

问题是,当我保存上下文时,只有动态参数(在模型中创建)存储在sql文件中,那些未包含在模型中(手动创建)的参数不会持久存在... 所以name1name2name3参数在第一次创建对象时会有值,但是在下一次App运行时,因为我不再创建它们了...它们是null ...

如果我从OBJECT1类创建派生类...

,也是如此

是否有办法永久存储整个对象,并仅将Core Data模型用于需要建立索引的关键属性?

BASE OBJECT1:

@interface OBJECT1 : NSManagedObject
{
    NSString *name1;
    NSString *name2;
    NSString *name3;
}

    @properties (nonatomic,assign) NSNumber *order;
    @properties (nonatomic,copy) NSString *name1;
    @properties (nonatomic,copy) NSString *name2;
    @properties (nonatomic,copy) NSString *name3;

@end

@implementation OBJECT1

    @dynamic order;

    @synthesize name1;
    @synthesize name2;
    @synthesize nam3;

@end

1 个答案:

答案 0 :(得分:2)

托管对象类是普通类,您可以向它们添加实例变量并使用它们。这并不意味着这些数据会神奇地保存,因为它与Core Data存储无关。

如果您正在使用Core Data,请将要保留的所有信息添加到模型中,以便Core Data可以为您控制/保存它。运行2种不同的方案来保存来自同一对象的数据将会造成混淆和容易出错。