Outils pour utilisateurs

Outils du site


restkit:mapper_des_donnees_imbriquees

Mapper des données imbriguées

cas d'usage

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.

Proposition de solution

Dans Coredata

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

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];
restkit/mapper_des_donnees_imbriquees.txt · Dernière modification: 2016/10/17 13:56 (modification externe)