objective-c – 核心数据中多对多关系的属性声明
我有一个使用Core Data编写的应用程序.我有两个具有一对多关系的实体.我已经为它们分类了NSManagedObject.单方面的实体称为播放列表,另一方称为歌曲.
播放列表的界面: @interface VBPlaylist : NSManagedObject { } @property (readwrite,copy) NSString *name; @end 播放列表的实现: @implementation VBPlaylist @dynamic name; @end 我想我应该有另一个属性来表示播放列表下的歌曲.我找不到任何示例代码,显示了许多关系写成属性.你怎么做到这一点? 解决方法
核心数据将对象关系建模为对象引用.所以从实体吧到实体Baz(假设Baz由Baz类实现)是一个一对一的关系
@interface Bar : NSManagedObject { } @property (readwrite,nonatomic) Baz * toBaz; @end 许多关系被建模为可变集合属性(虽然不是NSMutableSet).假设从Bar到Baz的很多关系叫许多Bazz: @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”,以获取许多与Bazz关系的KVO兼容代理. 在Leopard(OS X 10.5)及更高版本上,所有适用的方法都可以在运行时由Core Data框架自动生成,即使您没有明确声明或实现它们(当然,如果您尝试使用编译器警告)使用它们而不在头文件中声明它们).因此,您不需要子类 获取声明和实现权限的最简单的方法是选择数据建模器中的属性,并从“设计 – 数据模型”菜单中选择“复制Objective-C 2.0方法声明到剪贴板”,粘贴到实现类中.h文件.当然,你必须保持你的.h和模型是同步的…因此,一个衷心的建议,rentzsch的令人敬畏的MO Generator,一个工具,将自动生成(并重新生成)NSManagedObject子类从您的数据模型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |