如何更新CoreData中另一个实体的子实体

Posted

技术标签:

【中文标题】如何更新CoreData中另一个实体的子实体【英文标题】:How to update child entity of another entity in CoreData 【发布时间】:2013-11-07 20:21:03 【问题描述】:

我在我的应用程序中使用 CoreData 来“缓存”从我的服务器返回的数据。我拥有的一个实体(父)与另一个实体(子)具有一对多的关系。因此,如果您在 xcode 中查看数据建模器中的父实体,您会看到它有几个属性,一个是我可以用来访问正确父实体的 id,然后是与子实体的一对多关系。

子元素有大约 20 个属性,当用户在应用中执行某些操作时,我希望更新其中的一两个并保存在 CoreData 中。

我的问题是:我想知道如何或从哪里开始更新我的 CoreData 中的子元素。

我的结构的一个很好的例子就是下面的这个例子。我的父实体具有这些属性

身份证 fName lName 孩子们

我的子实体具有这些属性

 - iD
 - fName
 - lName
 - age
 - hobbies

我希望能够更新相应实体中的年龄和爱好属性。

(对不起,如果我用了错误的词(父母/孩子)来描述这种关系,我不知道该用什么)。

【问题讨论】:

您的问题到底是什么?您要更新所有子对象还是一个特定对象?为什么不能只设置对象的属性?需要更多信息... 好吧,我不确定如何更新 coredata 中的某些内容,我知道如何读写整个实体,但我不确定如何更新子实体中的单个值或行。 您无法更新单个属性。您必须获取对象、设置新属性并保存上下文(保存 所有 更改)。 好的,这看起来很多余,但没关系。所以现在我的问题是,一旦我更新了我已经完成的对象,我该如何保存上下文? [managedObjectContext save:&error]; 【参考方案1】:

更改属性和保存一样简单。

child.age = 14;
child.hobbies = setOfHobbies;
[self.managedObjectContext save:nil];

【讨论】:

以上是关于如何更新CoreData中另一个实体的子实体的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Core Data 和抽象实体创建主从接口?

如何在不更新具有多对多关系的子实体的情况下保留父实体?

了解在“便签本”中创建和更新的 CoreData 实体

Restkit/CoreData - 更新实体的属性不会更新 UITableView

coreData:从 NSSet 实体移动记录

在 CoreData 中更新和编辑实体