我正在运行一个使用coredata更新表的更新线程。 其中一条记录称为last-update。但是在更新完成后,我检索主线程中的最后更新值,我得到一个过时的值。
我做:
[NSFetchedResultsController deleteCacheWithName:nil];
再次查询设置之前,还有什么我应该/可以做的事情来提醒主线程它应该再次检查物理表吗?
答案 0 :(得分:2)
听起来好像你没有将更新同步回主线程NSManagedObject Controller。尝试添加这样的方法:
- (void)managedContextDidSave:(NSNotification *)n {
if ([NSThread isMainThread]) {
NSManagedObjectContext *context = /* Get context for main thread */;
[context mergeChangesFromContextDidSaveNotification:n];
} else {
[self performSelectorOnMainThread:@selector(managedContextDidSave:) withObject:n waitUntilDone:YES];
}
}
然后将其挂钩到NSManagedObjectContextDidSaveNotification
:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(managedContextDidSave:) name:NSManagedObjectContextDidSaveNotification object:nil];