CoreData:错误:在托管对象从其上下文中删除后对其进行变更
我构建了一个简单的应用程序,检索一些JSON并将数据存储在Core Data中。
在模拟器或设备上进行初始安装后,所有Core Data操作都没问题,但重新运行后,我收到以下错误消息:
2016-07-02 13:23:53.925 En Yakın[84775:5379467] CoreData: error: Mutating a managed object 0x79736290 (0x79736250) after it has been removed from its context.
视觉上没有错。 所有数据均按预期显示,并且应用程序function正常。
我调试了这个问题。 如果我注释掉JSON检索function并使应用程序在初始运行后使用Core Data中的内容,则不会显示任何错误消息。 但是再次检索应用程序会导致与我的核心数据堆栈(作为单个对象实现)的错误通信。
我该如何修改我的核心数据实施?
更新
我相信我将问题追踪到它的核心。 我正在存储我下载的大约6 KB的缩略图。 我发现存储图像会给Core Data带来性能损失。 但是这种尺寸的缩略图也会有问题吗? 如果我删除了对实体的图像分配,则错误消失。 我应该将它们存储在文件结构中吗?
错误很有趣:
请注意GUID前面的小写字母t
。 这意味着此对象是新的,尚未保存。 因此,除非您在每次使用后丢弃未保存的托管对象上下文,这是一个完全有效的策略,否则您将出现状态不匹配。
解决问题的简单方法是发出更多save
或在每次新提取之前丢弃的子上下文中操作。
- iOS:在didFinishLoad之后调整UIWebView的大小(内容应该不会滚动)
- iOS 10 UserNotifications不适用于已迁移的应用程序
- Xcode 7构建失败:ld:找不到-lGoogleAnalyticsServices的库
- YouTube在iPad上embedded代码
- 从Xcode打开终端
- iOS-CVPixelBuffer创build内存无法正确释放时,图像到video
- coredata keypath nameOfMovie找不到实体<NSSQLEntity Theaters id = 3>
- iOS正确停止AVCaptureSession
- 在故事板中添加navigationItem.titleView失败