1

サーバーからアップロード/ダウンロードしてゲームセンター経由で送信できるオブジェクトを使用して 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」をオフラインで使用できるようにする必要があるため、別の方法でデバイスに保存する必要があることです。

ありがとうございました!

4

1 に答える 1

2

個人的には、あらゆる場所で CoreData を使用します。理由:

  1. とにかくカードを処理するために、すでにCoreDataに飛び込む必要があります
  2. NSManagedObject+JSON という名前の NSManagedObject カテゴリを作成するだけです。その中には、呼び出された単純なメソッド-(NSDictionary*)jsonRepresentationがあり、UserCard 形式自体を辞書に入れ、それ自体を返します。超簡単。
  3. ファイルに書き込むリスクを冒すよりも、CoreData を使用して頻繁に保存する方が安全です。または 2. 完全に書き込まれていない (ファイルにすべてを書き込む前に、ユーザーがアプリを強制終了する可能性があります)
  4. UserCard エンティティを実装するための余分な作業はわずかです。
  5. CoreData の組み込みのメモリ管理と検索機能を利用できます。

CoreData を使用する大規模なプロジェクトを終えたばかりなので、少し偏っている可能性があります。ただし、質問で述べたことから、すべてに CoreData を使用します。CoreData と Web サーバーを扱う際に役立つオープンソース ライブラリを次に示します。

マジカルレコード

AFインクリメンタルストア

また、CoreData を Web サーバーと統合するための優れたチュートリアルです。

于 2013-07-24T04:20:32.613 に答える