2016-05-30 97 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,現在它們也正確映射了。