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