将非持久性变量添加到nsmangedobject

Wis*_*erd 10 core-data objective-c nsmanagedobject

我有一个NSManagedObject的子类,我想添加几个ivars来跟踪一些簿记.我不希望这些变量持续存在,因此我不将它们作为数据模型的一部分包含在内.

我无法找到正确的方法.

  • 我应该在我的班级中创建ivars,创建相应的属性,然后在实现中合成它们吗?
  • 我应该不创建ivars,而只是声明属性,然后@dynamic在implmentation中的属性?
  • 我应该采取其他一些方法吗?

而且我应该做在我的NSManagedObject子类所有的定制,或者我应该创建我的子类的子类,因此,如果我改变我的数据模型,我不会失去我的所有自定义时,我得到的Xcode生成我的NSManagedObject子类自动?

谢谢!

Dan*_*ert 10

该文档NSManagedObject有一个名为Custom Instance Variables的部分.它讨论了这两种方法.

瞬态,建模属性和ivars都是很好的解决方案.这取决于口味和风格.

其中很重要的一点要记住,如果你使用的ivars:你需要清除的ivars在- (void)didTurnIntoFault和设置任何初始值- (void)awakeFromFetch- (void)awakeFromInsert.你需要碰内部的任何建模属性或关系-didTurnIntoFault,否则你就有麻烦了.


Eim*_*tas 9

每个属性NSManagedObject都有一个名为transient的复选框.这样,您将拥有对象的动态访问器,而不会实际持久保存属性值本身.在文本字段下面找到属性名称条目的复选框.

在此输入图像描述

更新如果您不想因新属性创建迁移,请制作标准ivars

@interface MyMO : NSManagedObject {
    NSString *_nonPersistentAttribute;
}

@property (nonatomic, retain) NSString *nonPersistentAttribute;

@end

@implementation MyMO

@synthesize nonPersistentAttribute=_nonPersistentAttribute;

@end
Run Code Online (Sandbox Code Playgroud)