Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将IVAR添加到NSManagedObject子类_Objective C_Ios_Core Data_Nsmanagedobject - Fatal编程技术网

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的使用。