Objective c 将IVAR添加到NSManagedObject子类
当我使用核心数据创建实体,然后从中生成Objective c 将IVAR添加到NSManagedObject子类,objective-c,ios,core-data,nsmanagedobject,Objective C,Ios,Core Data,Nsmanagedobject,当我使用核心数据创建实体,然后从中生成NSManagedObject的子类时,我得到以下输出(在.h中): 但是,在.m文件中,我希望使用名称和其他值值。通常我只需创建几个ivar,然后根据需要为它们添加属性。这样我就可以轻松地在.m文件中访问它们 在这种情况下,这样做是否可以接受?将IVAR添加到.h(用于name和otherValues)是否会导致对象的持久性和检索出现异常行为?您不使用实例变量访问核心数据管理对象的属性 生成的实现文件包含以下语句 @dynamic name; @dynam
NSManagedObject
的子类时,我得到以下输出(在.h中):
但是,在.m文件中,我希望使用名称
和其他值
值。通常我只需创建几个ivar,然后根据需要为它们添加属性。这样我就可以轻松地在.m文件中访问它们
在这种情况下,这样做是否可以接受?将IVAR添加到.h(用于
name
和otherValues
)是否会导致对象的持久性和检索出现异常行为?您不使用实例变量访问核心数据管理对象的属性
生成的实现文件包含以下语句
@dynamic name;
@dynamic otherValues;
这意味着核心数据属性的getter/setter函数是动态创建的,例如从托管对象上下文或底层持久存储中检索值
因此,应始终使用属性访问属性,例如:
Foo *myFoo = [NSEntityDescription insertNewObjectForEntityForName:@"Foo" inManagedObjectContext:context];
myFoo.name = @"test";
或者,您可以使用键值方法:
[myFoo setValue:@"test" forKey:@"name"];
另请参见:在“核心数据编程指南”中:
核心数据动态生成高效的公共和原始get和
设置属性访问器方法。。。在托管对象子类中,您可以
可以在接口中声明建模属性的属性
文件,但不声明实例变量
您不使用实例变量来访问核心数据管理对象的属性 生成的实现文件包含以下语句
@dynamic name;
@dynamic otherValues;
这意味着核心数据属性的getter/setter函数是动态创建的,例如从托管对象上下文或底层持久存储中检索值
因此,应始终使用属性访问属性,例如:
Foo *myFoo = [NSEntityDescription insertNewObjectForEntityForName:@"Foo" inManagedObjectContext:context];
myFoo.name = @"test";
或者,您可以使用键值方法:
[myFoo setValue:@"test" forKey:@"name"];
另请参见:在“核心数据编程指南”中:
核心数据动态生成高效的公共和原始get和
设置属性访问器方法。。。在托管对象子类中,您可以
可以在接口中声明建模属性的属性
文件,但不声明实例变量
核心数据文档的另一个值得阅读的部分是。特别是如果您对自定义getter和setters@downvoter当前位置如果您愿意留下评论,那么我可以尝试修改或改进我的答案。我没有问题承认错误,或者删除我的答案以选择更好的答案。非常感谢这个答案-它确实帮助我理解了NSManagedObjects的使用。核心数据文档中另一个值得阅读的部分是。特别是如果您对自定义getter和setters@downvoter当前位置如果您愿意留下评论,那么我可以尝试修改或改进我的答案。我没有问题去承认错误,或者删除我的答案来选择更好的答案。非常感谢这个答案——它确实帮助我理解了NSManagedObjects的使用。