Core Data 将一对一关系建模为对象引用。Bar
因此,从 Entity到 entity的一对一关系Baz
(假设Baz
由 class 实现Baz
)将是
@interface Bar : NSManagedObject {
}
@property (readwrite,nonatomic) Baz * toBaz;
@end
对多关系被建模为可变集合属性(尽管不是)NSMutableSet
。Bar
假设从到Baz
调用的一对多关系manyBazz
:
@interface Bar : NSManagedObject {
}
@property (retain) NSSet* manyBazz;
@end
// coalesce these into one @interface AnalysisRecord (CoreDataGeneratedAccessors) section
@interface Bar (CoreDataGeneratedAccessors)
- (void)addManyBazzObject:(Baz *)value;
- (void)removeManyBazzObject:(Baz *)value;
- (void)addManyBazz:(NSSet *)value;
- (void)removeManyBazz:(NSSet *)value;
@end
如果你想使用 NSMutableSet 接口来操作manyBazz
关系,你应该调用-mutableSetValueForKey:@"manyBazz"
来获取一个符合 KVO 的manyBazz
关系代理。
在 Leopard (OS X 10.5) 及更高版本上,所有适当的方法都是由 Core Data 框架在运行时自动生成的,即使你没有显式声明或实现它们(当然,如果你尝试,你会收到编译器警告使用它们而不在头文件中声明它们)。因此你不需要子类化
获得声明和实现权的最简单方法是在数据建模器中选择属性,然后从“设计->数据模型”菜单中选择“复制 Objective-C 2.0 方法声明到剪贴板”,粘贴到您的实现类中。 h 文件。当然,你必须让你的 .h 和模型保持同步……因此强烈推荐rentzsch 很棒的MO 生成器,一个可以从你的数据模型中自动生成(和重新生成)NSManagedObject 子类的工具。