サーバーからアップロード/ダウンロードしてゲームセンター経由で送信できるオブジェクトを使用して CoreData を正しく実装する方法についての提案が必要です。
アプリはトレーディング カード ゲームに似ており、次の 2 つの別個のエンティティからアイデアを得ることができます。
- カード: 各カードに関するすべての情報を含む実際の一意のカード。「Card」エンティティは静的で変更されません。「CardId」を送信して「Card」エンティティをプルするだけなので、サーバーに送信する必要もありません。
- UserCard: ユーザーが所有するすべてのカード。ユーザーは同じカードを複数回持っている可能性がありますが、これは基本的な「カード」へのポインタ (「CardId」) を持つ別の「UserCard」になります。それらは常に変化しています。それらは、GameCenter を介して簡単に送信され、サーバーからアップロード/ダウンロードされる必要があります。また、ユーザーが友人のプロフィールにアクセスして友人が持っているカードを確認するときに、一時的な「UserCard」をサーバーからダウンロードする必要があります。
これを正しく行う方法について誰か提案がありますか? 現在、私には2つのアイデアがあります:
A. すべてに CoreData を使用します。これは、「UserCard」が NSManagedObject サブクラスであることを意味し、(NSCoding を使用して) インテリジェントにエンコード/デコードされ、GameCenter を介してアップロード/ダウンロードおよび送信されます。基本の「カード」はCore Dataで関係として設定されています。「一時」属性も「UserCard」に設定され、現在のユーザーに属していないものを認識できるようにして、後で削除できるようにします。
B. 基本的な「Card」には CoreData のみを使用し、「UserCard」には NSObject サブクラスを使用します。これにより、「UserCard」を CoreData に挿入しなくても直接使用できます。ダウンロード/アップロード、GameCenter 経由での送信が簡単になります。また、ビューがオブジェクトの使用を停止したときにオブジェクトの割り当てが解除されるため、「一時的な」プロパティの必要性もなくなります。この方法の問題は、現在のユーザーの「UserCard」をオフラインで使用できるようにする必要があるため、別の方法でデバイスに保存する必要があることです。
ありがとうございました!