¿Cómo asociar las entidades de datos básicos para su uso con RestKit?

Tengo dos entidades de datos centrales ( Client y UserFile ) con las que he establecido una relación satisfactoria.

He creado classs para ambas entidades y las RKManagedObject convertido en subclasss de RKManagedObject .

Cuando creo un nuevo UserFile , quiero asociarlo correctamente con un Client . Esto es lo que estoy haciendo:

 Client *client = [Client objectWithPrimaryKeyValue:@"1"]; UserFile *file = [UserFile object]; file.client = client; file.clientId = client.clientId; [[RKObjectManager shanetworkingManager] postObject:file delegate:self]; 

Parece que tengo que asignar file.clientId para que se envíe el parámetro correcto al server (si solo asigno file.client entonces el client_id enviado está en blanco).

Parece que debo asignar file.client para evitar que se file.client y se file.client un nuevo Client vacío con el file (se requiere la relación del cliente).

¿Es esto correcto? ¿Realmente tengo que asignar tanto la key externa como la entidad real? Esto parece un poco networkingundante para mí, pero ¡felizmente confieso que faltan mis conocimientos de Core Data y RestKit!

Para responder a su pregunta, parece que necesita hacerlo en ambos pasos en este momento. Aquí está el código del RKDiscussionBoardExample incluido con la biblioteca:

 DBTopic* topic = [[DBTopic findFirstByAttribute:@"topicID" withValue:topicID] retain]; _post = [[DBPost object] retain]; _post.topicID = topic.topicID; _post.topic = topic; 

Entonces, las relaciones no están configuradas correctamente en el ejemplo, o realmente necesitas ambos pasos.

Además, debería utilizar la versión más nueva de RestKit que tiene un asignador de objects diferente y desatesting RKManagedObject. Sus relaciones deberían ser algo como esto:

 RKManagedObjectMapping* clientMapping = [RKManagedObjectMapping mappingForClass: [Client class]]; clientMapping.primaryKeyAttribute = @"clientID"; [clientMapping mapKeyPathsToAttributes: @"id", @"clientID", nil]; RKManagedObjectMapping* userFileMapping = [RKManagedObjectMapping mappingForClass:[UserFile class]]; userFileMapping.primaryKeyAttribute = @"userFileID"; [userFileMapping mapKeyPathsToAttributes: @"id", @"userFileID", @"client_id", @"clientID", nil]; [userFileMapping mapRelationship:@"client" withObjectMapping:clientMapping];