CoreData:错误:从上下文中删除托管对象后,对其进行突变

Can*_*Can 5 core-data ios swift

我构建了一个简单的应用程序,该应用程序检索一些JSON并将数据存储在Core Data中。

在模拟器或设备上进行初始安装后,所有Core Data操作均正常,但在重新运行时,出现以下错误消息:

2016-07-02 13:23:53.925 En Yak?n[84775:5379467] CoreData: error: Mutating a managed object 0x79736290 <x-coredata:///Category/t4B10F995-A717-4DB8-9E87-8A1C079D45D42> (0x79736250) after it has been removed from its context.
Run Code Online (Sandbox Code Playgroud)

视觉上没有错。所有数据均按预期方式显示,并且应用程序功能正常。

我调试了问题。如果我注释掉JSON检索功能,并使应用程序在初次运行后使用Core Data中的内容,则不会显示任何错误消息。但是再次使应用程序检索会导致与我的Core Data Stack(实现为单例对象)发生通信错误。

我应该如何修改核心数据实现?

更新资料

我相信我已将问题追根溯源。我正在存储已下载的大约6 KB的缩略图。我发现存储图像将对Core Data产生性能影响。但是这种大小的缩略图也会有问题吗?如果删除对实体的图像分配,错误将消失。我应该将它们存储在文件结构中吗?

ado*_*oho 7

错误很有趣:

<x-coredata:///Category/t4B10F995-A717-4DB8-9E87-8A1C079D45D42>

注意tGUID 前面的小写字母。这意味着这个对象是新的并且没有被保存。因此,除非您在每次使用后丢弃未保存的托管对象上下文,这是一种完全有效的策略,否则您会遇到状态不匹配。

解决问题的简单方法是发出更多saves 或在每次新获取之前丢弃的子上下文中操作。