gpt4 book ai didi

iphone - 后台 MOC 的 "save:"无效(但返回 YES)

转载 作者:行者123 更新时间:2023-11-28 20:39:13 25 4
gpt4 key购买 nike

考虑以下代码:

[context performBlock:^{
// add a bunch of objects to context

NSError *error;
if(![context save:&error])
NSLog(@"Couldn't save MOC because of error: %@", error.localizedDescription);
}];

这是在“Store Manager”类中,它有 2 个 MOC 的 getter:一个标准的 .objectContext 和一个 .backgroundObjectContext,它用以下内容初始化:

backgroundObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
backgroundObjectContext.parentContext = self.objectContext;

我的问题:当我将 context 设置为 self.objectContext 时,一切正常,数据保存到 .sqlite 文件中。当我将它设置为 self.backgroundObjectContext 时,没有数据写入 sqlite 文件,但是 save: 返回 YES 没有错误。我尝试记录该上下文的 registeredObjects 并且一切都在那里。为什么数据没有写入 sqlite 文件?

我已经使用新的 MOC iOS 5 API 一段时间了,这是我第一次遇到这个问题,所以我很无能。这就是您在 iOS 5 中初始化后台 MOC 的方式吗?还有什么我可能在这里遗漏的吗?

最佳答案

当您保存子上下文时,更改会与父上下文合并。要写入文件,您需要将上下文保存在根目录中。

所以在这种情况下:

  • 您保存 backgroundObjectContext 以将更改与 objectContext 合并

  • 您将 objectContext 保存到 PSC

关于iphone - 后台 MOC 的 "save:"无效(但返回 YES),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9266037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com