después de leer las Object Mapping-Guide on GitHub para RestKit mi problema no desapareció, así que quizás alguien puede decir si RestKit podía tratar con la siguiente idea.RestKit relaciones de correspondencia objeto sin KVC
entidades con relaciones
Company
- unitID
- companyID
- name
- contacts* (Company -->> Contact | 1:n)
Contact
- unitID
- companyID
- contactID
- lastName
- firstName
- account* (Contact >--> Company | 1:1)
JSON (Empresa)
[
{
"unitID":"003CABD8DEB5DC13C",
"companyID":"BSP-002999",
"name":"Testcompany"
}
]
JSON (Contacto)
[
{
"unitID":"DAC2ACCC125795D00",
"companyID":"BSP-002999",
"contactID":"CLP-015468",
"firstName":"Mister",
"lastName":"Wayne"
}
]
Debido a las limitaciones no soy capaz de anidar los contactos que pertenecen a las empresas (de lo contrario no iba a escribir esto), por lo que quieren hacer este uso cuando los datos se mapea en la importación.
Pregunta
¿Es posible asignar cada contacto a él es que pertenece la empresa (identificado por el atributo CompanyID) en las importaciones con métodos dados por RestKit?
Si no es así, me gustaría saber la mejor solución para ello. ¡Gracias!
Antecedentes
En mi primera construcción de esta aplicación que he asignado los objetos a las entidades dadas (sin relación) y fui a buscar todos los contactos que pertenecen a una empresa con el predicado CompanyID =% @. Debido a la cantidad de datos (4000 + 7000 + Empresas, Contactos) ir a buscar todos los contactos que pertenecen tarda aproximadamente un segundo - por lo que se me ocurrió la idea de utilizar relationsships (que funciona perfecto con datos ficticios locales).
Solución
Con la ayuda de la respuesta dada a mi asignación actual se parece a la siguiente (v.10 RestKit).
// Setting up Restkit with objectStore
...
// Init objectMapping for Class Company
companyMapping = [RKManagedObjectMapping mappingForClass:[Company class] inManagedObjectStore:objectStore];
[companyMapping mapKeyPath:@"unitID" toAttribute:@"unitID"];
[companyMapping mapKeyPath:@"companyID" toAttribute:@"companyID"];
[companyMapping mapKeyPath:@"name" toAttribute:@"name"];
companyMapping.setDefaultValueForMissingAttributes = NO;
companyMapping.primaryKeyAttribute = @"companyID";
// Init objectMapping for Class Contact
contactMapping = [RKManagedObjectMapping mappingForClass:[Contact class] inManagedObjectStore:objectStore];
[contactMapping mapKeyPath:@"unitID" toAttribute:@"unitID"];
[contactMapping mapKeyPath:@"companyID" toAttribute:@"companyID"];
[contactMapping mapKeyPath:@"contactID" toAttribute:@"contactID"];
[contactMapping mapKeyPath:@"lastName" toAttribute:@"lastName"];
[contactMapping mapKeyPath:@"firstName" toAttribute:@"firstName"];
contactMapping.setDefaultValueForMissingAttributes = NO;
contactMapping.primaryKeyAttribute = @"contactID";
// Init relationships
[contactMapping mapRelationship:@"company" withMapping:companyMapping];
[contactMapping connectRelationship:@"company" withObjectForPrimaryKeyAttribute:@"companyID"];
// Get objects from server
...
¿Sería tan amable de su solución de trabajo de este ejemplo? :) Solo para las asignaciones –
Actualicé mi entrada anterior con una configuración de ejemplo. ¡Espero eso ayude! – flashfabrixx