2

iCloudを使用してファイルまたはコアデータを同期する方法について、さまざまな投稿を読み始めました。私が現在開発中のアプリは、ドキュメント アプリ サンドボックスに保存されている画像ファイルへの参照として、コア データとファイル名内にデータを保存します。そのため、ユーザーがデータベース内にレコードを作成するたびに、関連するファイル (写真) もドキュメント ディレクトリに作成されます。

ファイルまたはコア データを同期する必要がある場合はすべて問題ないように見えますが、コア データとファイルを同期する方法を探しています。そのため、新しいコア データ レコードがそれらのレコードの画像ファイルよりも早く到着する場合が心配です。その場合、データの整合性が損なわれます。実際には、すべての新しい関連ファイルが最初に来て、次にすべてのコア データが更新されることを望みます。それは可能ですか?

4

1 に答える 1

2

そうではありません。データをクラウドに送信しますが、他のデバイスに表示されるタイミングを制御する方法はありません。iCloudは、外部ファイルの状態に関係なく、管理対象オブジェクトをいつでも引き継ぐことができます。これを実現する唯一の方法は、外部ファイルを見つけてダウンロードし、ダウンロードが完了するのを待ってから、CoreDataスタックを起動することです。ただし、これは、ダウンロードが完了するまでユーザーをデータストアからロックアウトすることを意味します。これはお勧めできません。

私が同様の状況に直面したとき、私はそれを次のように扱いました:

  • すべての外部ファイルのダウンロードを開始し、CoreDataスタックを起動します。
  • イメージのgetterメソッドを変更して、ファイルが存在し、ダウンロードされているかどうかを確認します。
    • 両方に「はい」の場合は、通常どおり続行します
    • いいえの場合、「loading...」UIエレメントを表示します。これは、スピナーまたは進行状況インジケーターである可能性があります。カスタムの「ダウンロード完了」通知を聞きます。
  • 外部ファイルのダウンロードが完了するたびに、その「ダウンロード完了」通知を投稿してください。ファイルを再確認し、準備ができたら、「読み込み中...」のUIを画像に置き換えます。
于 2013-02-21T17:51:54.947 に答える