Core data 如何更新NSMutableSet中的核心数据对象?

Core data 如何更新NSMutableSet中的核心数据对象?,core-data,one-to-many,nsmutableset,Core Data,One To Many,Nsmutableset,我看过很多文章,展示了如何为“多对多”关系从NSMutableSet添加或删除核心数据对象。但是,如何更新现有的?具体来说,我在ViewController中显示一对多关系“多”侧的对象表。当用户单击表行(表示其中一个对象)时,我希望通过prepareForSegue方法将此特定对象发送到另一个ViewController。我对这段关系的“一方”没有问题。但我在处理这段关系的“很多”方面遇到了麻烦。您能否发布一个示例,说明如何将一个对象从关系的“多”端发送到另一个ViewController,让

我看过很多文章,展示了如何为“多对多”关系从NSMutableSet添加或删除核心数据对象。但是,如何更新现有的?具体来说,我在ViewController中显示一对多关系“多”侧的对象表。当用户单击表行(表示其中一个对象)时,我希望通过prepareForSegue方法将此特定对象发送到另一个ViewController。我对这段关系的“一方”没有问题。但我在处理这段关系的“很多”方面遇到了麻烦。您能否发布一个示例,说明如何将一个对象从关系的“多”端发送到另一个ViewController,让VC对其进行更新并将其保存到核心数据


非常感谢

只需更新有问题的对象本身!再简单不过了

NSSet *employees = department.employees;
Employee *bride = [employees lastObject];
NSLog(@"%@", bride.lastName); // "Johnson"
bride.lastName = @"Smith";
[self.managedObjectContext save:nil];

NSLog(@"%@", [department.employees.lastObject lastName]); // "Smith"

如果你有一个关系并查询它,你会得到一个集合

如果要更改此集合,而不是更改集合中包含的对象,可以使用一种简便的方法:

比如说

NSMutableSet *relatedObjects = [object mutableSetValueForKey:@"relationshipName"];
[relatedObjects addObject:anotherRelatedObject];

通过这种方式,您可以返回一组可变的相关对象,而不仅仅是不可变的对象,并且您所做的任何更改都将在保存时保持不变。

这是有效的,因为
NSSet
是不可变的,它包含的对象不必是可变的。所以这里发生的事情是,一个包含的对象正在被修改,但是集合仍然包含相同的对象,所以你没有破坏易变性