2011-09-13 2 views
3

私はちょうどココアを習っているので、私に同行してください。私はCore Dataに関するいくつかのチュートリアルを行ってきましたが、RailsをRailsアプリケーションで使用するためにRESTkitに取り組んでいます。私はまた、RESTkit wikiページ(すべてのiOS SDK:高度なRestKit開発は非常に便利でした)ですべてのドキュメント、ソリューションのレシピを読んでいます。(複雑な)リレーションシップとコアデータ/ RAILSを持つRestkit

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

は、私は次のモデルがあるとします。会社、人物、以下の関係を持つ言語:

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

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

ある時点で、既存の会社および既存の言語に関連するRailsアプリに新しい人物が紹介されます: Steve Jobs> Disney、Steve Jobs>英語 同時に新しい人が新しい会社に追加され、新しい言語 などが追加されます。 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)既存の人物が第2の会社にリンクしている場合はどうなりますか?

これは非常に現実的な世界のように思えますが、ドキュメントには似たような例がないのが奇妙だと思います(この件に関するチュートリアルを書くつもりです。あなたの助け)

答えて

4

私がしようとすると、あなたの質問に対処しましょう一度に1:

  1. はい、適切なマッピングの設定で、RestKitは、上記のJSONから新しい企業や言語を作成することができます。
  2. はい、ネストされた会社と言語のデータを取得して、現地の店舗の既存の会社や言語に新しいPersonを接続するためにマッピング時に使用できるcompany_idとlanguage_idの外部キーを避けることができます。次のマッピングAPIをチェックアウト:

    • (無効)connectRelationship:(NSStringの*)relationshipName withObjectForPrimaryKeyAttribute:(NSStringの*)primaryKeyAttribute。 #3 &#4については

、あなたはこれらを具体的に答えることができる前に、サーバーのAPIの設計を固めるために必要になるだろう。質問でネストされたJSONを使用することを提案しましたが、ネストされたJSONを使用しないことを示唆する質問もあり、上記のJSONを複数のリクエストに分割することさえできます。 #4で説明したシナリオはRestKitで処理できますが、実際にどのようなものをサーバーに呼び出すか、そしてそれらの呼び出しに応答してどのペイロードが戻ってくるかによって、実際にどのように依存するのかの詳細がわかります。ここでもっと助けてくれることをうれしく思いますが、終わりにはRestKitがあなたのユースケースを処理できることを非常に確信しています。マッピング設定の詳細は、サーバAPIのファイナライズに大きく依存します。

+0

ありがとうございます。私はあなたを正しく理解している:オプション1)は、帯域幅を節約し、オプション2)JSONを分解し、3)で説明した方法を使用するとバンド幅は減少するが、手作業ですべてを接着する必要があるマッピングAPIのconnectRelationship –

関連する問題