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产生性能影响。但是这种大小的缩略图也会有问题吗?如果删除对实体的图像分配,错误将消失。我应该将它们存储在文件结构中吗?
错误很有趣:
<x-coredata:///Category/t4B10F995-A717-4DB8-9E87-8A1C079D45D42>
注意tGUID 前面的小写字母。这意味着这个对象是新的并且没有被保存。因此,除非您在每次使用后丢弃未保存的托管对象上下文,这是一种完全有效的策略,否则您会遇到状态不匹配。
解决问题的简单方法是发出更多saves 或在每次新获取之前丢弃的子上下文中操作。