iPhone アプリに iCloud コア データ同期を実装する作業を行っています。私はユーザー ワークフローに取り組んでいます。私が直面している問題は、アプリがいつデータを iCloud に「シード」する必要があるかを把握しようとすることです。これは、次の 2 つのユースケースで発生する可能性があります。(1) アプリが最初にインストールされ、プリロードされたデータをシードしたい場合、または (2) 既存の顧客が iCloud アップデートをダウンロードし、既存のデータをiCloudにアップロードされました。これらのケースのそれぞれで、アプリケーションに「シード ストア」を用意し、そこからデータを読み取って iCloud にアップロードします。
問題は、データがすでにシードされているかどうかをどのように確認するかです。1 つのオプションは、シードが完了したらデバイスからシード ストアを削除することです。これにより、次回アプリを起動したときに、再度シードする必要がないことがわかります。
しかし、ストアが別のデバイスから既にシードされている場合はどうなるでしょうか? データがシードされるべきではないことを教えてくれるiCloudでチェックできるフラグのようなものはありますか? それとも、ローカル シード ストアが存在する場合は常にデータをシードしてから重複除外する必要がありますか? 最初のシード データ (インストール後のアプリの最初の起動から) はユーザーが削除できるため、問題が発生します。したがって、(1) iPhone にアプリをインストールしてから既定のデータ セットを削除し、次に (2)アプリを iPad にインストールすると、デフォルトのデータ セットが再度アップロードされます。
私が思いついたもう 1 つのオプションは、ユーザーがアプリをインストールするか、iCloud をオンにしたときに、ユーザーに「データは既にアップロードしましたか?」と尋ねることです。iCloud のデータをローカル データに置き換えますか? 彼らが「はい」と答えると、iCloud のデータ ストアが破壊され、ローカル データが再シードされます。ただし、これの問題は、ユーザー エラーの可能性を生み出すことです。これは、ユーザーに失敗してほしくないことです。
何かご意見は?