1

ユーザーが を使用して iCloud を使用するアプリをインストールし、そのアプリを使用してUI(Managed)Documentデータを作成し、それを iCloud に保存してから自分の電話でアプリを削除した場合、iCloud データはデバイスに残ります (トランザクション ログなど)。ユーザーがアプリを再インストールすると、これらの古いファイルを使用しようとします。

それには次の2つの問題があります。

  • その間に iCloud ドキュメントが変更された可能性があり、ユーザーがアプリを再インストールした後の最初の起動時にネットワーク接続がない場合に問題が発生する可能性があります。
  • このアプリの iCloud ドキュメントは、ユーザーによって (設定またはユーザー ライブラリの Mac OS Finder で) 削除された可能性があります。現在、ユーザーがアプリを再インストールした後の最初の起動時にネットワークがない場合、アプリは既に削除されていても、データを含むユビキタス コンテナーがあると見なす場合があります (アプリがクラッシュする可能性があります)。

これをテストするのは簡単ではありませんが、これら 2 つの問題で確実にクラッシュや誤動作が発生しています。たとえばNSMetadataQuery、削除されたためにiCloudに存在しないドキュメントの結果が表示されます(ただし、アプリの削除時には存在していました)。

これに対する簡単な解決策はありますか?アプリを初めて起動したときにデバイス上のローカルの iCloud データを削除することを考えましたが、どうすれば削除できますか?

4

1 に答える 1

0

それはできません。iCloud ドキュメントをローカルで削除すると、どこからでも削除され、最終的には削除されます。iCloud API には、iCloud サービスとは独立してローカル コピーを管理するという概念がないため、ネットワークがダウンしていても、ローカル コピーを削除すると、iCloud ユビキタス デーモンは最初の機会にサービスに削除コマンドを送信します。

現在の API で可能な最も近い概算は次のとおりです。

  • ネットワークが到達可能かどうかを確認する
  • アクセスできない場合は、iCloud ドキュメントにアクセスしないでください (ご指摘のとおり、情報が古くなっている可能性があるため)。
  • ネットワークが起動したら、既存のすべての iCloud ドキュメントを開いてみてください。(iOS では、iCloud の更新はオンデマンドでのみダウンロードされるため、そのデマンドを作成する必要があります)。

それが十分でない場合 (そして、それに直面してみましょう、それだけでは十分ではありません)、Apple にバグを報告し、最善を尽くしてください。

于 2013-02-28T17:47:47.370 に答える