我对核心数据比较陌生,并经常使用一对多关系。然而,我目前处于一种多对多关系有意义的情况。我有用户和组,用户可以有很多组,组会有很多用户。然而,我发现我不知道如何设置它。
要将用户添加到群组,我通常会执行类似...
的操作Group *group = [NSEntityDescription
insertNewObjectForEntityForName:@"Group"
inManagedObjectContext:_managedObjectContext];
group.user = myUser;
但现在我有group.users
(复数),我无法弄清楚我应该填充的内容。我的用户对象应该是NSArray
吗?如果是这样,这是否意味着每次我想要添加新用户时我首先必须获取所有当前用户,将其粘贴到数组中,使用新用户更新该数组,然后分配group.users
?
我无法想象我必须做一些荒谬的事情;有人会给我一个关于我如何建立多对多关系的基本解释吗?
答案 0 :(得分:1)
多对多关系的值是NSSet
,而不是NSArray
。但你可以使用
生成的Core Data访问器方法,用于将元素添加到多对多关系。
例如:
User *user = ...;
Group *group = ...;
// Add user to group:
[group addUsersObject:user]; // (1)
// Or, alternatively, add group to user:
[user addGroupsObject:group]; // (2)
(您可以执行(1)或(2)。如果关系定义为 inverse 关系 彼此之间,一个自动暗示另一个。)
答案 1 :(得分:0)
您可以使用NSDictionary或NSMutableDictionary来保存n< - > n关系中的对象。
答案 2 :(得分:0)
Apple开发者网站上的核心数据编程指南非常详尽。页面中间有一个部分位于下面的链接,其中介绍了如何创建多对多关系。