2016-05-30 95 views
4

我使用Restkit 0.26.0与多层地图JSON和这个关键路径造成麻烦:Restkit无法使用相应的映射

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" 
} 
], 

我映射

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

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

目的地级别

@interface TransferProductColorImage : NSObject 

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

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

问题是生成的对象是正确的类,但属性未填充。

我搜索的日志,发现这个:

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) 

在模型对象productColorImages是的NSArray:

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

这是奇怪,因为。如果映射为空,Restkit如何知道要使用的映射。对象映射可以设置为null是否有任何理由?

更新:我发现标识符和颜色属性被正确映射,它的标识符和URL映射不正确。

+0

您是否在模型中创建了关系? –

+0

我更新了问题 – HasenBaumeister

+0

对不起,我假设你正在使用核心数据持久性和NSManagedObject。但你不是。我可以建议的唯一的事情是尝试NSOrderedSet而不是NSArray。我所有的都是NSOrderedSets。 –

回答

1

我将URL属性更改为小写:“url”,并将其完全像我以前所做的那样映射,并且工作正常。看起来像全部大写的属性名称抛出了RestKit。

我猛扑了标识符和id,现在它们也正确映射了。