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

发布于 2024-10-19 18:04:13 字数 229 浏览 3 评论 0原文

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

我这样做:

[NSFetchedResultsController deleteCacheWithName:nil];

在再次查询设置之前,但是我应该/可以做些什么来提醒主线程它应该再次检查物理表?

I am running an update thread which updates a table using coredata.
One of the records is called last-update. But when after the update is finished I retrieve the last-update value in the main thread I get an outdated value.

I do:

[NSFetchedResultsController deleteCacheWithName:nil];

before query-ing the setting again, but is there anything else I should/can do to alert the mainthread that it should check the physical table again?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

止于盛夏 2024-10-26 18:04:13

听起来您没有将更新同步回主线程的 NSManagedObjectController 中。尝试添加这样的方法:

- (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];

It sounds like you're not syncing the updates back into the main thread's NSManagedObjectController. Try adding a method like this:

- (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];
    }
}

Then hook that up to the NSManagedObjectContextDidSaveNotification:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(managedContextDidSave:) name:NSManagedObjectContextDidSaveNotification object:nil];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文