====== Mapper des données imbriguées ======
===== cas d'usage =====
Soit le contenu XML suivant :
Valeur attr1
Valeur 1
Valeur 2
Valeur 3
On souhaite parser ce contenu et en intégrer les données dans des entités Coredata pour gérer un cache local. La récupération des données imbriquées n'est pas aussi simple qu'elle en a l'air avec Restkit. Du moins n'ai-je pas trouvé de moyen simple... En effet, dans l'objet //EntiteFille//, il n'existe pas de moyen d'identifier chacun des attributs. //EntiteFille// est une collection d'objets non identifiés rattachés à //EntiteMaitre//.
===== Proposition de solution =====
==== Dans Coredata ====
On crée une entité //EntiteMaitre// à laquelle on associe un attribut //EntiteFille// de type [[https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdNSAttributes.html|transformable]]. Une fois générée sous la forme de NSManagedObject, la classe présente la forme suivante :
@interface EntiteMaitre : NSManagedObject
@property (nonatomic, retain) id EntiteFille;
@end
==== Mapping avec Restkit ====
EntiteFille étant un attribut, le mapping est alors simple :
RKManagedObjectMapping *entiteMapping = [RKManagedObjectMapping mappingForClass:[EntiteMaitre class]
inManagedObjectStore:[[[RKObjectManager sharedObjectManager] objectManager] objectStore]];
[hotelMapping mapKeyPathsToAttributes:
@"AttrEntiteFille", @"EntiteFille", // Mapping des AttrEntiteFille
nil];