ios核心数据:如何更改NSManagedObject而不将其保存到上下文中

Posted

技术标签:

【中文标题】ios核心数据:如何更改NSManagedObject而不将其保存到上下文中【英文标题】:ios Core Data: How to change NSManagedObject without saving it to the context 【发布时间】:2012-08-21 13:57:30 【问题描述】:

我假设一个名为“mArray”的 NsMutableArray 具有从核心数据上下文中获取的结果。因此,“mArray”包含一些 NSManagedObjects。

有时我必须对这些对象进行一些编辑。

再进一步,我将不得不向上下文添加一些新的 NSManagedObjects,还需要保存上下文。

现在新对象已保存,但对这些对象的上述编辑也已保存。

我希望能够仅将新添加的 NSManagedObjects 保存到上下文中而无需进行编辑。

有人能指点我正确的方向吗?

谢谢

【问题讨论】:

如果添加新实体,此时不需要保存上下文。只需推迟保存,直到您完全准备好。 我将不得不在某个时间保存上下文,因为我需要在下一次应用启动时使用新条目。 NSmutableArray *newArr = [mArray mutableCopy]。新数组中的对象将指向 mArray 中的相同对象,对吧? 好吧,保存在 applicationWillTerminate: 中。也就是说,如果您想更改实体,并且不想保存它们,请创建新实体但永远不要将它们添加到上下文中,并使用它们来保留临时设置。 MyObject * obj = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject" inManagedObjectContext:nil] 安全吗? 【参考方案1】:

当您保存上下文时,您将保存其中的所有内容。如果您想处理一些不与其他对象同时保存的对象,则需要使用多个上下文。

请参阅有关 NSManagedObjectContext 的文档,因为使用多个上下文并不是世界上最简单的事情。

【讨论】:

以上是关于ios核心数据:如何更改NSManagedObject而不将其保存到上下文中的主要内容,如果未能解决你的问题,请参考以下文章

ios核心数据回滚

核心数据一对多关系

使用核心蓝牙 ios 扫描外围设备时如何更改特征顺序

iOS - 如何刷新/更新核心数据瞬态属性?

核心数据模型对象保存的最佳实践

iOS:备份核心数据并使用较新的模型版本进行恢复