2016-05-30 1 views
4

J'utilise Restkit 0.26.0 à la carte JSON avec plusieurs couches et ce chemin clé provoque des problèmes:Restkit ne parvient pas à utiliser la cartographie appropriée

productColorImages: [ 
{ 
id: 10, 
productId: "232", 
color: "green", 
url: "exampleURL.com" 
}, 
{ 
id: 11, 
productId: "232", 
color: "red", 
url: "exampleURL.com" 
}, 
{ 
id: 12, 
productId: "232", 
color: "blue", 
url: "exampleURL.com" 
} 
], 

Ma cartographie

 RKObjectMapping *transferProductColorImageMapping = [RKObjectMapping mappingForClass:[TransferProductColorImage class]]; 
[transferProductColorImageMapping addAttributeMappingsFromDictionary:@{  @"identifier" : @"id", 
                      @"URL" : @"URL", 
                      @"productId" : @"productId", 
                       @"color" : @"color" 

[getProductPageMappingaddRelationshipMappingWithSourceKeyPath:@"productColorImages" mapping:transferProductColorImageMapping];

La classe de destination

@interface TransferProductColorImage : NSObject 

@property (nonatomic) NSNumber * identifier; // Mapps to id ;int 64 

@property (nonatomic) NSString * URL; 
@property (nonatomic) NSString * productId; 
@property (nonatomic) NSString * color; 

Le problème est que l'objet résultant est de la bonne classe mais les propriétés ne sont pas remplies.

J'ai cherché dans les journaux et trouvé ceci:

2016-05-30 17:42:24.007 thebrandsapp[20697:7047455] T restkit.object_mapping:RKMappingOperation.m:1173 Performing mapping operation: <RKMappingOperation 0x7f9e3b9c11e0> for 'TransferProductColorImage' object. Mapping values from object { 
    color = green; 
    id = 10; 
    productId = 232; 
    url = "exampleURL.com"; 
} to object <TransferProductColorImage: 0x7f9e3b846d60> with object mapping (null) 

sur le modèle objet les productColorImages est un NSArray:

@property (nonatomic) NSArray <TransferProductColorImage *> * productColorImages; 

C'est étrange parce que. Comment Restkit sait quel mapping utiliser si le mapping est nul. Y a-t-il une raison pour laquelle le mappage d'objet peut être défini sur null?

Mise à jour: J'ai trouvé que l'identificateur et la propriété de couleur ont été mappés correctement, il est, l'identifiant et l'URL ne sont pas mappés correctement.

+0

Avez-vous créé la relation dans votre modèle? –

+0

J'ai mis à jour la question – HasenBaumeister

+0

Désolé, je supposais que vous utilisiez Core Data pour la persistance et NSManagedObject. Mais tu n'est pas. La seule chose que je peux suggérer est d'essayer NSOrderedSet plutôt que NSArray. Tous les miens sont NSOrderedSets. –

Répondre

1

J'ai changé la propriété de l'URL en minuscules: "url" et mappé exactement comme avant et cela a fonctionné. Il semble que le nom de propriété all-caps a jeté RestKit de.

J'ai basculé identifiant et id, maintenant ils mappent également correctement.