Iphone CoreData NSObjectionAccessibleeException

Iphone CoreData NSObjectionAccessibleeException,iphone,core-data,Iphone,Core Data,我的应用程序中有以下流程: 我的第一个屏幕是一个UITableView,后面有一个NSFetchedResultController和一个刷新我的列表的后台线程。 我的表格单元格的NSManagedObject被称为DataItem,当我点击一个单元格时,我会推另一个viewcontroller,它显示关于DataItem的更多详细信息,但是如果在我推detailsviewcontroller的同时后台线程刷新列表,并且在这个更新过程中我需要要删除DataItem对象,它将导致对象无效,因此在我

我的应用程序中有以下流程:
我的第一个屏幕是一个
UITableView
,后面有一个
NSFetchedResultController
和一个刷新我的列表的后台线程。 我的表格单元格的
NSManagedObject
被称为
DataItem
,当我点击一个单元格时,我会推另一个
viewcontroller
,它显示关于
DataItem
的更多详细信息,但是如果在我推
detailsviewcontroller
的同时后台线程刷新列表,并且在这个更新过程中我需要要删除
DataItem
对象,它将导致对象无效,因此在我的
detailsviewcontroller
中,当我尝试访问
DataItem
中的属性时,将引发
NSObjectInaccessibleException
:“核心数据无法为…实现故障”

解决这种情况的最佳方法是什么?与其将
DataItem
对象传递给
detailsviewcontroller
,不如直接从
DataItem
传递必要的属性,或者是否有解决此类情况的方法


谢谢

看看这篇文章:

在标题为“安全地获取对象”的部分中,Matt Gallagher描述了一种使用其URI获取托管对象的方法。因此,在您的示例中,不要将
DataItem
实例传递给细节视图控制器,而是传递其URI。当details视图控制器加载其视图时,尝试从该URI获取对象-使用本文建议的方法。如果对象不再可用,您将得到一个
nil
值作为回报


我个人还没有尝试过这个代码示例,所以我不确定它是如何工作的。我希望它能帮助您找到解决方案……

我不认为这个解决方案对我有太大帮助,因为我需要保护自己不被删除对象。我仍然需要删除对象以保持列表的准确性,但我不能让用户等我确定列表是否准确。我现在找到的解决方案是将必要的值从DataItem传递给我的DetailsViewController,而不是NSManagedObjectModel,后者可能会在以后失效。@Mihai-但是如果您的对象被后台更新删除,你不想告诉用户,而不是给他们看一个不再存在的
DataItem
?这是您的选择,但根据我的建议,fetch将返回一个
nil
,而不是抛出异常,因此您将受到保护。。。只要在fetch返回
nil
时,让您的
DetailViewController
显示一条用户友好的消息,例如“数据项不可用”。。。