objective-c – 核心数据中多对多关系的属性声明

前端之家收集整理的这篇文章主要介绍了objective-c – 核心数据中多对多关系的属性声明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_0@
我有一个使用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子类从您的数据模型.

猜你在找的C&C++相关文章