Mig*_*uño 7 core-data rows objective-c nsfetchedresultscontroller
当使用辅助线程刷新NSFetchedResultsController内容时,我遇到了一种奇怪的行为,我想知道这是一个常见问题,或者我可能做错了什么.
我有一个集中的NSManagedObjectContext驻留在我的主委托对象中,由所有视图控制器使用和共享.通过执行fetch并调用其委托方法加载表后,将在后台启动辅助线程以更新其结果.但是,只有在奇怪的场合,当插入新条目时,它们才会在表格视图中重复出现.如果我退出并重新进入,重复的行会消失,这使得认为它们只存在于托管对象上下文中.
以下是以下步骤:
在后台保存时,通知方法调用主线程上的集中上下文mergeChangesFromContextDidSaveNotification选择器,如下所示.
-(void)mergeChanges:(NSNotification *)notification
{
NSManagedObjectContext *mainContext = [[appDelegate sharedDelegate] managedObjectContext];
[mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
withObject:notification
waitUntilDone:NO];
}
Run Code Online (Sandbox Code Playgroud)完成操作后,将删除侦听器并释放辅助上下文.
有没有人知道是什么原因导致我的表视图行重复,以及如何解决它?
在此先感谢您的帮助.
实际上,托管对象上下文中不能有“重复”对象,因为上下文中的每个对象都必须是唯一的。维护唯一的对象是上下文的核心功能,因此它不会发生。所以,你有两个条件之一:
我认为后者的可能性更大。