所以这就是我面临的问题。我有一个由NSFetchedResultsController支持的UITableView。现在,在应用程序启动时,我更新了数据源,涉及进行多个网络调用和处理传入数据。如果用户在更新数据源时删除其中一行,则在异步网络回调中访问已删除的数据会使应用程序崩溃。如何优雅地处理这个场景?
答案 0 :(得分:0)
在访问对象之前,请尝试在对象上调用isDeleted
。
答案 1 :(得分:0)
如果您正在使用NSFetchedResultsController的内存跟踪,则可以在从持久性存储中删除记录之前从您的接口中删除该记录。确保读取NSFetchedResultsController的委托的NSFetchedResultsChangeType,并确保将后台线程(删除对象的位置)中的NSManagedObjectContext与读取记录的NSManagedObjectContext合并。
确定对象是否已被删除的一种好方法是使用existingObjectWithID检查具有当前对象id的现有对象:error :.当使用没有NSFetchedResultsController的NSManagedObjects时,这非常有用。