UIManagedDocument とユビキタス オプション (NSPersistentStoreUbiquitousContentNameKey と NSPersistentStoreUbiquitousContentURLKey) を使用して Core Data と iCloud をテストしています。すべて正常に動作しています。デバイスは問題なく適切な時間内に同期されます。DB が小さい (100K 未満)。
私が言ったように、私はアプリをテストしていて、データベースに多くの変更を加えています。その結果、多くのトランザクション ログが生成されます。私が抱えている問題は、テストに使用したデバイスの 1 つでアプリを削除して再インストールすると (iCloud データを削除せずに)、アプリがドキュメントを開くのに非常に長い時間がかかることです。openWithCompletionHandler には数分かかり、終了しない場合もあります。デバッグをオンにすると (-com.apple.coredata.ubiquity.logLevel 3)、長い待機時間があり、その後 DB がトランザクション ログで再構築されることがわかります。iCloudデータを削除して最初のデバイスにデータを再挿入すると、2番目のデバイスは問題なく同期します。そのため、遅延の理由はトランザクション ログの数が多いことだと思います (developer.icloud.com で確認できるように、テスト中に 20 ~ 30 個)。コア データの管理 iCloud トランザクション ログはコア データを自動的に処理しますが、削除が見られません。おそらく、それにはもう少し時間が必要です。
私の質問は次のとおりです。トランザクション ログは統合されますか? ログの統合を強制できますか? 別の推奨オプションは?
同期に必要な重要な情報のサブセットのみを iCloud Core Data ファイルに保存します。完全な DB を含む別のローカル ファイルがあるので、情報を大幅に失うことなく iCloud DB を再構築できます。おそらく、大量のログを検出して iCloud DB を削除し、再作成することができます。これは良い選択肢だと思いますか?
助けてくれてありがとう。