2

iCloudをサポートするためにローカルのCoreData-drivenアプリを更新しています。私が予想する課題の1つは、私が「ストックオブジェクト」と呼んでいるものです。アプリが最初の起動時に提供するシードデータで、99%のユーザーがカスタマイズします。

ストックオブジェクト

Item A
Item B

カスタマイズされたオブジェクト

Tomatoes
Potatoes

その後、ユーザーが新しいデバイスで初めてアプリを起動した場合、デフォルトの動作は、iCloud永続ストア(アイテムA、アイテム)からカスタマイズされたオブジェクトとマージされるストックオブジェクトの再作成であると思いますB、トマト、ジャガイモ)、ユーザーエクスペリエンスが乱雑になります。

1つのアプローチは、最初の起動時にiCloudデータを同期的にチェックし、存在する場合はストックオブジェクトを作成しないことです。しかし、それでも、ユーザーは最初の起動時にオフラインになる可能性があり、2回目の起動時に、ローカルストックオブジェクトとiCloudカスタムオブジェクトの同じ望ましくないマージが発生します。

iCloudマージにロジックを追加して、クラウドからカスタマイズされたオブジェクト(トマトとポテト)が到着すると、ローカルのストックオブジェクト(アイテムAとアイテムB)がビームアップする前に削除するように通知できるようにする方法はありますか?

ありがとう!

4

2 に答える 2

0

シードオブジェクトを提供しないことで、これを回避しませんか?UIを介してユーザーにプロンプ​​トを表示し、最初の起動時に自分のオブジェクトを入力するだけです。彼女が以前にアプリを使用したことがあるかどうかを尋ね、オブジェクトを再作成する前にiCloudからの同期を待つのにお金がかかるかもしれないと説明します。

于 2011-12-24T17:59:38.303 に答える
0

これが最善のアプローチかどうかはわかりませんが、これが私が行っていることです。

  1. ユーザーがiCloudを有効にすることを選択すると、iCloudディレクトリが空かどうかを確認します。
  2. もしそうなら、問題ありません。データベースをiCloudオプションが有効になっている新しいローカルストアに移行して、既存のすべてのデータをクラウドに移動します。
  3. そうでない場合は、ローカルデータベースが空かどうかを確認します。もしそうなら、私はすべてのストックオブジェクトを一掃し、クラウドからすべてを取り出します。そうでない場合は、現在アプリがローカルデータベースをiCloudデータベースとマージできないことをユーザーに伝え、データを削除(または再インストール)するように依頼することで、この問題を回避します。
于 2012-01-03T07:35:44.330 に答える