将 NSManagedObject 更新为核心数据

Posted

技术标签:

【中文标题】将 NSManagedObject 更新为核心数据【英文标题】:Update NSManagedObject into Core Data 【发布时间】:2014-06-17 19:57:31 【问题描述】:

所以我有一个选项卡式应用程序。第一个选项卡允许用户在大约 20 个描述 NSManagedObject 的字段中输入信息。然后他们可以将其保存到核心数据中,并且效果很好。

第二个选项卡是所有现有提交的 TableView。现在,当用户单击 TableView 中的单元格时,它将打开第一个选项卡并重新填充最初保存到核心数据中的所有字段。当用户再次点击保存时,我希望更新核心数据中的现有提交,而不是新插入核心数据。

我发现很多信息说我应该发出一个获取请求,然后像这样更新它。但这对我来说似乎是多余的,因为我已经将保存的对象传递给了第一个选项卡/ViewController。

如果您能指出一些有助于我的情况的代码或描述您可能完成此场景的方法,我将不胜感激!

【问题讨论】:

如果您仍然有对该对象的引用,只需在保存时将其属性设置为更新的值,然后调用您的托管对象上下文的save: 方法。 嗯,我不确定我是否仍然可以访问用于从核心数据中获取项目并填充表格视图的上下文。当用户更新信息时,他们在第一个选项卡中执行此操作。用于抓取项目的上下文来自第二个选项卡。当用户选择表格中的一个单元格时,我会将项目的引用传递给第一个选项卡。我认为我无权访问第二个选项卡的上下文是错误的吗? 取决于您是否使用线程和多个上下文。如果不是,您应该能够从NSManagedObject 上的managedObjectContext 属性访问托管对象上下文。 这正是我想要的。太感谢了!如果您想发表您的评论作为答案,我很乐意将其标记为正确。 【参考方案1】:

由于您在第一个选项卡中引用了NSManagedObject,因此您可以在用户保存时将其属性更新为新值。然后,您可以通过调用[[myObject managedObjectContext] save:&error] 将更改保存到您的NSManagedObject(为简单起见,我们称之为myObject),其中errorNSError *

【讨论】:

以上是关于将 NSManagedObject 更新为核心数据的主要内容,如果未能解决你的问题,请参考以下文章

核心数据 NSManagedObject - ObservedObjects 未更新

核心数据:更新 NSManagedObject 并选择回退到原始状态

核心数据 NSManagedObject 更改

当更新版本已经在内存中时,强制核心数据从以前存储的版本刷新 NSManagedObject

核心数据-后台线程中的更新实体会自动更改主线程中的 NSManagedObject 而无需合并-为啥?

核心数据迁移:无法将“NSManagedObject_MyType”类型的值转换为“MyModule.MyType”