我使用NSFetchedResultsControllerDelegate在我的所有数据下载并插入coreData后显示我的单元格。 我使用下面的代码知道修改发生的时间
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshDatas:) name:NSManagedObjectContextDidSaveNotification object:nil];
然后,这个方法被称为
- (void)refreshDatas:(NSNotification *)notification
{
[[self.fetchedResultsController managedObjectContext] mergeChangesFromContextDidSaveNotification:notification];
}
但是,我有一个问题,第一次调用委托NSFetchedResultsControllerDelegate的insertRowAtIndexPath和插入UITableView的单元格显示之间有5到10秒,我不知道为什么。
感谢您的帮助
答案 0 :(得分:1)
如果您正在使用后台线程并在那里触发通知,则需要在主线程中“重新发布”通知,如:
- (void)refreshDatas:(NSNotification*)notification
{
if ([notification object] == [self managedObjectContext]) return;
if (![NSThread isMainThread]) {
[self performSelectorOnMainThread:@selector(refreshDatas:) withObject:notification waitUntilDone:YES];
return;
}
[[self managedObjectContext] mergeChangesFromContextDidSaveNotification:notification];
}
如果这不是问题,请尝试在问题中添加一些细节。核心数据很难,没有细节,很难理解发生了什么。
修改强>
如果[notification object]
(本例中的上下文)是主要变更,则不合并更改。相反,如果该上下文来自不同的线程,则合并更改。这是出于性能原因,但您可以将其删除。
希望有所帮助。