Restkit con relaciones (complejas) y datos básicos / RAILS

Por favor, aguanto conmigo, ya que estoy aprendiendo Cocoa. He seguido algunos tutoriales sobre Core Data, ahora estoy abordando RESTkit para usarlo con una aplicación Rails. También leí todos los documentos, recetas de soluciones en la página wiki de RESTkit (especialmente iOS SDK: Advanced RestKit Development fue muy útil).

En aras de la simplicidad, voy a usar una cantidad muy limitada de models / relaciones en esta pregunta.

Supongamos que tengo los siguientes models: empresa, persona, idioma con las siguientes relaciones:

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

y que tanto RAILS como la aplicación iOS están sincronizados.

En cierto momento, se introduce una nueva persona en la aplicación Rails, que está relacionada con una empresa existente y un idioma existente: por ejemplo. Steve Jobs> Disney, Steve Jobs> Inglés Al mismo time, se agrega una nueva persona a una nueva compañía y un nuevo idioma, por ejemplo. Anna Kourinikova> Nike, Anna Kournikova> Ruso

Ahora, ¿cómo configuro una solución de synchronization? Podría pedir un volcado JSON de todas las personas nuevas:

 [{"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" } }}] 

Ahora mis preguntas:

1) ¿Puede (y si es así cómo?) RESTkit crear y vincular la nueva empresa y el idioma. Supongo que para la compañía existente no es un problema, pero los nuevos aún no existen en mi Core Data.

2) ¿Existe una forma de evitar la necesidad de include todos los datos de la empresa y el idioma, como en la aplicación de mundo real, esto crearía una enorme sobrecarga de datos que ya existe en el dispositivo iOS si las personas se agregan a empresas existentes

3) puede ser el enfoque de search primero todos los idiomas nuevos, todas las compañías nuevas y luego ir a search a las nuevas personas, con solo el ID de la lengua / compañía a la que están relacionadas es un mejor enfoque de esa manera (para conservar la banda ) pero ¿no estoy haciendo manualmente muchas cosas que RESTkit puede hacer automáticamente?

4) ¿Qué pasa si una persona existente está vinculada a una segunda compañía?

Como esto parece ser una situación mundial muy real, me parece extraño que no haya ningún ejemplo (similar) en la documentation (estoy dispuesto a escribir un tutorial sobre este tema, siempre que pueda resolverlo con su ayuda).

Permítame tratar y abordar sus preguntas una por una:

  1. Sí, con la configuration de asignación adecuada, RestKit puede crear nuevas compañías e idiomas desde el JSON anterior.
  2. Sí, puede evitar search los datos de la empresa y el idioma nesteds en favor de las keys extranjeras de id_company y language_id que se pueden usar en el momento del mapeo para conectar una nueva Persona a las empresas y / o idiomas existentes en su tienda local. Echa un vistazo a la siguiente API de mapeo:

    • (vacío) connectRelationship: (NSString *) relationshipName withObjectForPrimaryKeyAttribute: (NSString *) primaryKeyAttribute;

Para los n. ° 3 y n. ° 4, necesitará solidificar el layout de la API de su server antes de que puedan responderse concretamente. Ha sugerido que usará el JSON nested en la pregunta, pero también ha hecho preguntas que sugieren que no puede usar el JSON nested e incluso puede dividir el JSON anterior en varias requestes. El escenario que describe en # 4 puede ser manejado por RestKit, pero los detalles de cómo realmente dependen de lo que llama su realización al server y qué carga útil vuelve en respuesta a esas llamadas. Estoy feliz de poder brindar más ayuda aquí, pero al final del día, estoy muy seguro de que RestKit puede manejar tus casos de uso, con los detalles de tu configuration de mapeo dependiendo en gran medida de que finalices la API del server.