3

我有一个核心数据 iOS 应用程序,它使用 Cloudkit 使用 NSPersistentCloudkitContainer - iOS 13 及更高版本。我在 iPad 和 iPhone 上测试过,同步效果很好。我现在尝试使用相同的 Cloudkit 容器(仍在开发中)将 Cloudkit 添加到类似的 Mac 应用程序中。这同样适用于同步,但通常在 iPad 上添加/删除实体会导致 Mac 崩溃,如下所示:

**libxpc.dylib`___xpc_activity_dispatch_block_invoke.109.cold.3:

0x7fff70a14423 <+0>:  pushq  %rbp
0x7fff70a14424 <+1>:  movq   %rsp, %rbp
0x7fff70a14427 <+4>:  xorl   %edi, %edi
0x7fff70a14429 <+6>:  callq  0x7fff70a144d8            ; symbol stub for: _os_assert_log
0x7fff70a1442e <+11>: movq   %rax, %rdi
0x7fff70a14431 <+14>: callq  0x7fff70a144ea            ; symbol stub for: _os_crash

-> 0x7fff70a14436 <+19>: ud2 **

调用堆栈显示: 调用堆栈

我正在使用 NSFetchedResultsControllerDelegate,在 didChange 函数中进行了一些调试。有时我可以在崩溃之前看到一个问题,例如它说它将在第 6 行插入一个对象,而表本身只有 4 行。我并不总是收到这样的消息。

在 FetchedResultsControllerDelegate didChange 中,我将调试放在了开关的 .delete 部分。当表中只有 7 个时,我已经看到它试图删除第 8 项。我不让它这样做,但我最终没有删除我想要的项目。看起来 CloudKit 更改请求可能是以“错误”的顺序进入的?

请有人建议我如何进行调试?谢谢。

4

0 回答 0