我理解为什么会出现这个错误:当您尝试访问在另一个线程的托管对象上下文中被删除的CoreData对象时,因此设置为“fault”对象,并且任何保留的引用将不再指向有效的CoreData对象。
我正在使用NSFetchedResultsController。
我已确认所有代码都已正确实现。我有两个托管对象上下文,一个用于BG线程,一个用于主线程。
我已确认主线程已订阅了NSManagedObjectContextDidSaveNotification下的通知。
我已确认当此通知触发时,我在主线程托管对象上下文上执行mergeChangesFromContextDidSaveNotification:。
我没有在任何地方保留这些对象,但我正在为NSFetchRequest设置批处理大小(这可能是问题吗?)
然而,我仍然偶尔会收到“CoreData无法满足故障”的错误消息。
在我的特定应用程序中,这通常发生在一种“数据绑定”过程中,因此我可以安全地丢弃故障对象并继续。我想通过在数据绑定循环内部包装@try-catch块来完成此操作,只跳过我收到CoreData错误的行。
我可以用CoreData安全地这样做吗?还是在遇到故障后我需要完全丢弃托管对象上下文?
我已经查看了关于如何检查CoreData对象是否为故障的问题,如果我不能安全地假设我的@try-catch块不会引起其他问题,那么可能需要实现这个功能。
我正在使用NSFetchedResultsController。
我已确认所有代码都已正确实现。我有两个托管对象上下文,一个用于BG线程,一个用于主线程。
我已确认主线程已订阅了NSManagedObjectContextDidSaveNotification下的通知。
我已确认当此通知触发时,我在主线程托管对象上下文上执行mergeChangesFromContextDidSaveNotification:。
我没有在任何地方保留这些对象,但我正在为NSFetchRequest设置批处理大小(这可能是问题吗?)
然而,我仍然偶尔会收到“CoreData无法满足故障”的错误消息。
在我的特定应用程序中,这通常发生在一种“数据绑定”过程中,因此我可以安全地丢弃故障对象并继续。我想通过在数据绑定循环内部包装@try-catch块来完成此操作,只跳过我收到CoreData错误的行。
我可以用CoreData安全地这样做吗?还是在遇到故障后我需要完全丢弃托管对象上下文?
我已经查看了关于如何检查CoreData对象是否为故障的问题,如果我不能安全地假设我的@try-catch块不会引起其他问题,那么可能需要实现这个功能。