我正在使用语句
删除NSManagedObject[managedObjectContext deleteObject:obj];
然后将更改存储到该持久性存储中。当我尝试使用某个数据库查看器查看我的实际表时,我可以看到表中的对象仍然存在。我很困惑,我在删除后进行了刷新调用,如下所示(在保存到持久存储之前)。
[managedObjectContext refreshObject:obj mergeChanges:YES];
当我试图查看桌子时,我看不到对象。它现在正在运作,但由于两个原因我很困惑。
1:我在许多其他地方删除了很多对象,并没有在每个地方进行刷新,但保存到持久存储中。
2:我不理解刷新已删除对象的概念。
任何人都可以帮助我吗?提前谢谢!
答案 0 :(得分:1)
如果没有更多的背景,就不容易回答。
也就是说,如果删除托管对象,则不会更新fetchedResultsController,除非它们是在同一个managedobjectContext上创建的。换句话说,如果从两个不同的托管上下文发出的两个数据库提取将具有数据库状态的不同步视图。
我建议你检查是否不是这种情况。
此外,您不必执行刷新 - 除非在非常特定的情况下 - 如果您实现了NSFetchedResultsControllerDelegate协议,NSFetchresultController会收到有关数据库更改的通知。