2012-02-15 9 views
2

オブジェクト(NSManagedObject(NSMO)サブクラス)をWebサービスに送信して後で取得する必要があります。私はどうにかしてそれをシリアライズできると思っていましたが、私はエンコーディング・フープを飛び越える必要はないと考えています。NSManagedObjectをシリアル化できますか?

私が使用して辞書にシンプルNSMOオブジェクトに変換することができます。しかし、私のNSMOは、他のNSMOsとの関係の面で深いレベルの数である [instance dictionaryWithValuesForKeys:instance.entity.attributesByName.allKeys];

を。オブジェクトの完全なシリアル化バージョンを作成する最善の方法は何でしょうか?

答えて

4

あなたは一般的な方法でこれを実行したい場合は、再帰的な方法serializedDictionary(NSManagedObjectのサブクラスまたはカテゴリのいずれかで)書くことができます:

  1. が空NSMutableDictionaryを作成します。
  2. プロパティについては、キーと値を辞書に追加します。
  3. の関係の場合は、関係名をキーとして追加し、オブジェクトのserializedDictionaryを呼び出して値として追加します。多対多関係の場合は、これらの値をNSArrayに配置する必要があります。

子オブジェクトが親に​​バックアップすることは可能です(コアデータのような逆の関係がある場合は非常に可能です)。保存する関係をホワイトリストに登録するかどのオブジェクトがすでにシリアル化されているかを追跡するためにセットに沿って渡すので、再度エンコードしないようにします(難しく、これはお勧めしません)。

+0

ありがとうございました。私は辞書を取得するための再帰的な方法を作る考えが好きです。しかし、サービスがデータを返すときに私がやることは、それをNSMOに逆シリアル化するのではなく、古い形式のデータを表示する必要があるだけでなく、トラック。そうすれば、逆の関係についても心配する必要はありません。また、私はto-manysを辞書にセットとして追加し、キーを関係名として追加すると思います。 –

+0

辞書から管理対象オブジェクトを作成するとき、Core Dataは自動的に逆関係を設定します。また、1つのフォームでデータを扱う場合は、表示コードがよりシンプルになります。 – benzado

関連する問題