簡體   English   中英

CoreData:錯誤:在托管對象從其上下文中刪除后對其進行變更

[英]CoreData: error: Mutating a managed object after it has been removed from its context

我構建了一個簡單的應用程序,檢索一些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.

視覺上沒有錯。 所有數據均按預期顯示,並且應用程序功能正常。

我調試了這個問題。 如果我注釋掉JSON檢索功能並使應用程序在初始運行后使用Core Data中的內容,則不會顯示任何錯誤消息。 但是再次檢索應用程序會導致與我的核心數據堆棧(作為單例對象實現)的錯誤通信。

我應該如何修改我的核心數據實施?

更新

我相信我將問題追蹤到它的核心。 我正在存儲我下載的大約6 KB的縮略圖。 我發現存儲圖像會給Core Data帶來性能損失。 但是這種尺寸的縮略圖也會有問題嗎? 如果我刪除了對實體的圖像分配,則錯誤消失。 我應該將它們存儲在文件結構中嗎?

錯誤很有趣:

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

請注意GUID前面的小寫字母t 這意味着此對象是新的,尚未保存。 因此,除非您在每次使用后拋棄未保存的托管對象上下文,這是一個完全有效的策略,否則您將處於狀態不匹配狀態。

解決問題的簡單方法是發出更多save或在每次新提取之前丟棄的子上下文中操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM