3

私はココアを学んでいるので、ご容赦ください。Core Data に関するいくつかのチュートリアルを実行してきましたが、RESTkit を Rails アプリケーションで使用することに取り組んでいます。また、RESTkit wiki ページのすべてのドキュメント、ソリューション レシピも読みました (特に iOS SDK: Advanced RestKit Development は非常に役に立ちました)。

簡単にするために、この質問では非常に限られた数のモデル/関係を使用します。

次のモデルがあるとします: 会社、人、言語、次の関係:

company many-to-many person
language 1-to-many person

RAILS と iOS アプリの両方が同期していること。

ある時点で、既存の会社と既存の言語に関連する新しい人物が Rails アプリに紹介されます。スティーブ ジョブズ > ディズニー、スティーブ ジョブズ > 英語 同時に、新しい人が新しい会社に追加され、新しい言語が追加されます。Anna Kourinikova > Nike, Anna Kournikova > ロシア語

同期ソリューションを設定するにはどうすればよいですか? すべての新しい人の JSON ダンプを求めることができます。

[{"person": {
    "id": 123,
    "name": "Steve Jobs",
    "language": {
        "id": 1,
        "name": "English"
    },
    "company": {
        "id": 1,
        "name": "Disney"
    }
  }},
  {"person": {
    "id": 124,
    "name": "Anna Kournikova",
    "language": {
        "id": 22,
        "name": "Russian"
    },
    "company": {
        "id": 47,
        "name": "Nike"
    }
  }}]

今私の質問:

1) RESTkit は、新しい会社と言語を作成してリンクできます (そうであれば、どのように?)。既存の会社では問題ないと思いますが、新しい会社はコアデータにまだ存在しません。

2) すべての会社と言語データを含める必要を回避する方法はありますか?実際のアプリケーションでは、既存の会社に人が追加された場合、iOS デバイスに既に存在するデータの膨大なオーバーヘッドが発生します。

3)最初にすべての新しい言語、すべての新しい会社を取得してから、すべての新しい人々を取得するアプローチである可能性があります。それらが関連している言語/会社のIDのみを使用することは、その方法でより良いアプローチです(帯域幅を節約するため) ) しかし、RESTkit が自動的に実行できる多くのことを手動で行っていませんか?

4) 既存の個人が別の会社にリンクされている場合はどうなりますか?

これは非常に現実的な状況のように思えるので、ドキュメントに (同様の) 例がないのは奇妙だと思います (あなたの助けを借りて解決できれば、提供されたこの主題に関するチュートリアルを喜んで書きます.)

4

1 に答える 1

4

質問を 1 つずつ解決してみましょう。

  1. はい、適切なマッピング設定があれば、RestKit は上記の JSON から新しい会社と言語を作成できます。
  2. はい、マッピング時に使用できる company_id および language_id 外部キーを優先して、ネストされた会社および言語データをフェッチすることを回避して、ローカル ストア内の既存の会社および/または言語に新しい人物を接続することができます。次のマッピング API を確認してください。

    • (void)connectRelationship:(NSString*)relationshipName withObjectForPrimaryKeyAttribute:(NSString*)primaryKeyAttribute;

#3 と #4 については、具体的な回答を得る前に、サーバー API の設計を固める必要があります。質問でネストされた JSON を使用することを提案しましたが、ネストされた JSON を使用しない可能性があり、上記の JSON を複数のリクエストに分割する可能性があることを示唆する質問もしました。#4で説明したシナリオはRestKitで処理できますが、具体的な方法は、サーバーに対して行う呼び出しと、それらの呼び出しに応答して返されるペイロードによって異なります. ここでさらに多くの支援を提供できることをうれしく思いますが、結局のところ、マッピング構成の詳細はサーバー API の完成に大きく依存するため、RestKit がお客様のユースケースを処理できると確信しています。

于 2011-09-13T13:09:32.907 に答える