核心数据似乎没有采用更新的值

时间:2011-03-02 20:52:57

标签: iphone cocoa-touch core-data nsfetchedresultscontroller

我正在运行一个使用coredata更新表的更新线程。 其中一条记录称为last-update。但是在更新完成后,我检索主线程中的最后更新值,我得到一个过时的值。

我做:

[NSFetchedResultsController deleteCacheWithName:nil];

再次查询设置之前,还有什么我应该/可以做的事情来提醒主线程它应该再次检查物理表吗?

1 个答案:

答案 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];