====== 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];