RestKit: Comment définir manuellement la valeur d'une propriété d'object géré?

Comment définir manuellement la valeur d'une propriété d'object géré dans RestKit lorsqu'il est géré par le gestionnaire d'objects?

J'ai créé un RKObjectManager avec un magasin persistant pour la persistance des données de base.

J'ai ajouté un RKEntityMapping et un RKResponseDescriptor au gestionnaire d'objects.

Maintenant, je peux appeler le gestionnaire d'objects comme ceci:

[[RKObjectManager sharedManager] getObjectsAtPath:@"/path_to_ressource" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { // success } failure:^(RKObjectRequestOperation *operation, NSError *error) { // report error }]; 

Et datatables sont bien affichées dans un UITableView (j'utilise un NSFetchedResultsController pour cela). Tout a l'air bien, mes données sont persistantes.

Maintenant je veux append une propriété à l'entité qui dépend du keypath du descripteur de réponse. Comment dois-je faire cela et où?

Mon premier essai:

J'ai ajouté la propriété à l'entité de données de base, puis j'ai essayé ceci dans le bloc de succès du code présenté ci-dessus:

 for (Entity *s in mappingResult.dictionary[@"CurrentEntities"]) { s.isCurrent = [NSNumber numberWithBool:YES]; } for (Entity *s in mappingResult.dictionary[@"OldEntities"]) { s.isCurrent = [NSNumber numberWithBool:NO]; } 

en supposant que le json ressemble à ceci:

 { CurrentEntities: [{ id: 10, title: "bhubhbhu"}, { id: 11, title: "ezeze"}, ...], OldEntities: [{ id: 0, title: "rf-reref"}, { id: 1, title: "vcvcvcvcv"}, ...] } 

Après avoir défini la nouvelle propriété locale sur YES ou NO, je peux en effet voir le résultat dans ma vue de table mais il semble que ces changements ne soient pas persistants.

Donc des idées?

MODIFIER:

Eh bien, il semble que la sauvegarde du context rende les changements persistants:

 NSError *error = nil; [[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext saveToPersistentStore:&error]; 

MODIFIER:

En fait, il semble que je doive sauvegarder le context après chaque changement d'object, sinon j'obtiens des erreurs de Core Data.

Comme vous l'avez trouvé, vous pouvez simplement save les modifications que vous apportez. Étant donné que les valeurs que vous essayez de définir ne sont basées sur rien dans l'URL utilisée pour download datatables ou le contenu des données utiles (valeurs), votre option la plus simple consiste simplement à post-traiter et save. Pour interagir avec le process de mappage et injecter les valeurs, il faudra beaucoup plus de code.