gpt4 book ai didi

ios - 核心数据 MOC 保存暂停执行且保存失败(无错误或崩溃)

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

我最近实现了核心数据并发和线程限制。我正在消除皱纹。

我有一个主 MOC 和一个私有(private) MOC,每个都以非分层方式链接到 PSC。每当保存一个时,它们就会合并。

我遇到了 MOC 保存失败的问题。应用程序没有崩溃,但对象没有保存并且执行暂停(但可以恢复),问题导航器中显示以下内容:


如您所见,这是在私有(private) MOC 队列中执行的,这是正确的,因为这是执行暂停的行:


如您所见,我在私有(private) MOC 队列中将保存消息发送到私有(private) MOC。

关于如何解决此问题的任何想法?因为我没有收到错误消息,所以我真的不知道从哪里开始。谢谢!

更新

我按照 Marcus 的指示替换了我的保存/错误代码。现在是:

[[self privateManagedObjectContext] performBlockAndWait:^{
NSError *error = nil;
if (![[self privateManagedObjectContext] save:&error]) {
NSLog(@"ERROR SAVING MOC IN syncParseObjectLocally: %@\n%@", [error localizedDescription], [error userInfo]);
}
NSLog(@"%@", error);
NSLog(@"%@\n%@", [error localizedDescription], [error userInfo]);
}];

在日志中,这会产生所有 null

我没有使用 iCloud。

当我关闭 all-(objective-c-)exceptions 断点时,执行会无缝地继续(因此我可能会忽略这个问题,但更重要的是,我需要解决这个可能相关的问题:core data changes don't merge)

断点触发时手动输入'po error',日志显示:

(lldb) po error
nil

最佳答案

您可能遇到了内部异常之一。每当存在潜在的合并冲突时,Core Data 都会在内部抛出异常。它可能会解决合并(这就是您所看到的)但它仍然会抛出。

要对此进行测试,请将断点更改为仅在 Objective-C 异常而非 C++ 异常时中断。如果您再也看不到中断,那么这就是您所看到的。

此外,归档雷达;这个异常很烦人,如果我们有足够的票数来查看它,我会很高兴。

更新

有控制台输出吗?

error 变量有值吗?

我知道你说你没有收到错误消息,但我想验证 error 变量是 nil 与没有有效载荷。你能在那个断点做一个 po error 吗?

此外,我会尝试将该行代码更改为:

[[self privateManagedObjectContext] performBlockAndWait:^{
NSError *error = nil;
if (![[self privateManagedObjectContext] save:&error]) {
NSLog(@"ERROR SAVING MOC IN syncParseObjectLocally: %@\n%@", [error localizedDescription], [error userInfo]);
}
}];

只是为了测试队列是否真的属于this NSManagedObjectContext

更新

你在使用 iCloud 吗?

如果您关闭断点,应用程序是否可以正常运行?

当我提到 po error 时,我的意思是在遇到断点时执行此操作并手动输入。

我相信调用 -performBlockAndWait: 也没有任何效果。

我想知道您是否发现在 Core Data 中抛出了另一个新的内部异常,我希望我们能够找出导致它触发的原因。

关于ios - 核心数据 MOC 保存暂停执行且保存失败(无错误或崩溃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22948130/

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