我有两个实体书籍和捆绑.一本书可以属于none,也可以属于一个或多个bundle.所以我在这些实体之间有双向对多的关系.
我即将在Book部分设置这种关系的价值.
如果属性是常规属性,我只会做类似的事情
aBook.title = @"this is my title";
Run Code Online (Sandbox Code Playgroud)
如果我想设置一本书的标题.但由于这是双向对多关系,因此核心数据表明它是NSSet属性.
我的问题是:如何设置和读取此属性的值?
我首先认为这是一个常规的NSSet.所以,看完产品后,我就这么简单了
NSSet *aSet = Book.fromBundle;
Run Code Online (Sandbox Code Playgroud)
但令我沮丧的是,aSet包含零对象
所以我以为我错误地设置了它.我之前做过
Book.fromBundle = [NSSet setWithObject:aBundle];
Run Code Online (Sandbox Code Playgroud)
(是的,所有更改都保存到数据库中)
我错过了什么吗?谢谢
这是一个正常的集合,但核心数据建议不要直接分配一个新集合(正是出于这个原因)。如果您使用自定义类,标准实现将包括供addFromBundleObject:您removeFromBundleObject:使用的方法。如果您不使用自定义类,或者选择不实现这些方法,那么您可以使用该mutableSetValueForKey:方法来获取可以修改的集合。
NSMutableSet *mutableSet = [book mutableSetValueForKey:@"fromBundle"];
[mutableSet addObject:aBundle];
Run Code Online (Sandbox Code Playgroud)