NSPersistentCloudkitContainer - iOS 13 以降を使用して Cloudkit を使用する Core データ iOS アプリがあります。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 関数でいくつかのデバッグを行っています。テーブル自体に 4 行しかないのに、行 6 にオブジェクトを挿入しようとしているなど、クラッシュの前に問題が発生することがあります。私はいつもそのようなメッセージを受け取るとは限りません。
FetchedResultsControllerDelegate didChange では、スイッチの .delete 部分にデバッグを配置しました。テーブルに項目が 7 つしかないのに項目 8 を削除しようとしているようなものを見てきました。私はこれをさせませんが、欲しいアイテムを削除しないことになります。おそらく、CloudKit の変更要求が「間違った」順序で送信されているようです??
誰かがこれをデバッグする方法を提案できますか? ありがとう。