Soit le contenu XML suivant :
<EntiteMaitre> <attr1>Valeur attr1</attr1> <EntiteFille> <AttrEntiteFille>Valeur 1</AttrEntiteFille> <AttrEntiteFille>Valeur 2</AttrEntiteFille> <AttrEntiteFille>Valeur 3</AttrEntiteFille> </EntiteFille> </EntiteMaitre>
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.
On crée une entité EntiteMaitre à laquelle on associe un attribut EntiteFille de type 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
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];