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"
[getProductPageMapping
addRelationshipMappingWithSourceKeyPath:@"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.
Avez-vous créé la relation dans votre modèle? –
J'ai mis à jour la question – HasenBaumeister
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. –