一般的なアプローチは、サーバー側のオブジェクトを JSON に変換してから、JSON 文字列をデバイスに送信することです。デバイスで、JSON フレームワークを使用して JSON を NSDictionary/NSArray 値にデコードします (非常にシンプルで非常に高速なJSONKitをお勧めします)。
デコードされた JSON を取得したら、(恥知らずなプラグ警告)この手法を使用して、NS* オブジェクトを CoreData オブジェクトに変換し、携帯電話に保存できます。
リレーションシップの維持に関しては、ネストされた表現またはフラットな表現のいずれかを使用できます。ネストされた実装の例は次のとおりです。
{
class: "Contact",
first_name: "John",
last_name: "Doe",
contact_type: {
class: "ContactType",
type: "some value"
},
department: {
class: "Department",
name: "Department of Transportation"
}
}
これは、リレーションシップ サイクルのない単純なデータベースの場合に推奨される方法です。
または、フラットな表現を使用できます。
{
class: "Contact",
id: 1,
first_name: "John",
last_name: "Doe",
contact_type_id: 15,
department_id: 34
}
{
class: "ContactType",
id: 15,
type: "some value"
}
{
class: "Department",
id: 34,
name: "Department of Transportation"
}
次に、デバイスで contact_type_id と department_id を使用して手動で関係を解決する必要があります。
これらの両方のアプローチをテストして、特定のケースでどちらがうまく機能するかを確認することをお勧めします。個人的には、ネストされたアプローチをお勧めします (DB レイアウトで許可されている場合)。これは、はるかに高速であり、リレーションシップの解決がデバイス (おそらくできる場所) ではなくサーバー (おそらく余裕がある場所) で行われるためです。大規模なデータベースがある場合は余裕がありません)。