The*_*imp 0 core-data objective-c nsmanagedobject ios
当我使用核心数据创建实体然后NSManagedObject从中生成子类时,我得到以下输出(在.h中):
@class Foo;
@interface Foo : NSManagedObject
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSSet *otherValues;
@end
Run Code Online (Sandbox Code Playgroud)
但是,在我的.m文件中,我想使用name和otherValues值.通常我会创建几个ivars,然后根据需要为它们添加属性.这样我就可以轻松地在我的.m文件中访问它们.
在这种情况下这样做是否可以接受?将ivars添加到.h(for name和otherValues)会导致持久性和检索对象中的任何异常行为吗?
您不使用实例变量来访问Core Data托管对象的属性.
生成的实现文件包含语句
@dynamic name;
@dynamic otherValues;
Run Code Online (Sandbox Code Playgroud)
这意味着动态创建Core Data属性的getter/setter函数,例如从托管对象上下文或从底层持久性存储中检索值.
因此,您应始终使用属性来访问属性,例如:
Foo *myFoo = [NSEntityDescription insertNewObjectForEntityForName:@"Foo" inManagedObjectContext:context];
myFoo.name = @"test";
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用键值方法:
[myFoo setValue:@"test" forKey:@"name"];
Run Code Online (Sandbox Code Playgroud)
另请参阅:"核心数据编程指南"中的建模属性:
Core Data 动态生成有效的公共和原始get和set属性访问器方法...在托管对象子类中,您可以在接口文件中声明建模属性的属性,但不要声明实例变量.
| 归档时间: |
|
| 查看次数: |
524 次 |
| 最近记录: |