私のアプリでは、ユーザーはCoreDataに保存されている消耗品(スーツケースなど)を購入します。ユーザーが最初にアプリをインストールするとき、私は彼らに開始するための景品を与えます。アプリは、少なくとも1つのスーツケースが設定されていないと機能しません。
しかし、ユーザーがアプリをiPhoneにインストールしてからiPadにインストールし、2つを同期すると、スーツケースが2つになります。また、いずれかのデバイスでアプリをアンインストールしてから再インストールして同期すると、追加のアプリが追加され、無期限に実行できます。
私は2つの解決策を見ることができますが、どれも正しくないようです。
ユーザーが最初にiCloudと同期するときに、NSUbiquityKeyValueStoreに値を追加します。最初の起動時にこの値を確認してください。ゼロの場合は景品を作成し、そうでない場合はデータを同期します。しかし、これは問題を引き起こします。ユーザーが最初の起動時にiCloudを無効にするか、インターネットに接続していない場合はどうなりますか。アプリは景品を作成し、iCloudが利用可能になったら、複製を同期します。そうすれば、何度でもこれを行うことができます。
どういうわけか、各アプリのデフォルトのアイテムと一致します。objectIDまたはタイムスタンプを一致させることを考えましたが、これらは異なるため、処理方法がわかりません。
誰かが私がこれについてできることを知っていますか?
編集:
あらかじめパッケージ化されたデータベースとmigratePersistentStore:toURL:options:withType:error:を使用するのが道のようです。それが私のために働くならば、コードで答えを投稿します。