2011-06-20 49 views
1

我在我的應用程序中有以下流程:
我的第一個屏幕是UITableView支持NSFetchedResultController和後臺線程,刷新我的列表。 的NSManagedObject我的表格單元格被稱爲DataItem當我在一個單元格單擊我推另一viewcontroller顯示更多詳細的DataItem但如果後臺線程刷新列表,而我推detailsviewcontroller,並在此更新過程中,我需要刪除DataItem反對它會使得物體在我detailsviewcontroller所以是無效的,當我嘗試在DataItem訪問屬性將提高NSObjectInaccessibleException:「核心的數據未能履行的過錯......」CoreData NSObjectInaccessibleException

什麼是最好的辦法對於這種情況?而不是將DataItem對象傳遞給detailsviewcontroller我應該只傳遞DataItem的必要屬性,還是對這種情況有解決方法?

謝謝

回答

0

看一看這篇文章:

http://cocoawithlove.com/2008/08/safely-fetching-nsmanagedobject-by-uri.html

在標題爲「安全獲取對象返回」,馬特·加拉格爾介紹了使用其獲取管理對象的方法URI。所以在你的情況下,不要將DataItem實例傳遞給詳細視圖控制器,而是傳遞它的URI。當細節視圖控制器加載其視圖時,嘗試使用本文中建議的方法從該URI獲取對象。如果該對象不再可用,則將返回一個nil值。

我沒有親自試過這個代碼示例,所以我不知道它是如何工作的。我希望它能讓你走上尋求解決方案的道路......

+0

我不認爲這個解決方案對我有太大的幫助,因爲我需要保護自己免受對象刪除的影響。我仍然需要刪除這些對象以保持我的列表的準確性,但是我無法讓用戶等待我確保列表的準確性。 –

+0

我現在發現的解決方案是將必要的值從DataItem傳遞給我的DetailsViewController,而不是NSManagedObjectModel,以後可能會失效。 –

+0

@Mihai - 但是如果你的對象被後臺更新刪除,難道你不想告訴用戶,而不是向他們展示不再存在的「DataItem」?這是你的選擇,但是根據我的建議,fetch返回一個'nil'而不是拋出一個異常,所以你受到保護......你所需要做的就是讓你的'DetailViewController'顯示一個用戶友好的信息,例如。 「數據項不可用」,只要'nil'由提取返回... – octy

相關問題