2013-01-04 40 views
4

我有一個名爲Client的對象,它看起來像這樣。RestKit 0.20使用嵌套數組的POST JSON

@interface Client : NSManagedObject 
    @property (nonatomic, retain) NSString * firstName; 
    @property (nonatomic, retain) NSString * middleName; 
    @property (nonatomic, retain) NSString * lastName; 
    @property (nonatomic, retain) Styles *clientStyles; 
@end 

樣式是Client下面的嵌套對象。這是一對一的關係。當這從JSON服務器下來時,它看起來像這樣。

{ 
    "firstName": "", 
    "middleName": "", 
    "lastName": "", 
    "firstStyle": { 
     "styleId": 4, 
     "name": "", 
     "description": "", 
     "stylingTime": "55 min", 
     "stylingProductUsage": "A lot", 
     "chemicals": "LOTS O'GEL", 
     "deleted": false, 
     "modifiedOn": 1357161168830 
    } 
} 

一切都在一個很好的單個對象。我可以把它拉下來,並將其映射到我的對象沒有問題。當我需要將它返回給服務器時,問題就出現了。它需要採用這種格式。

{ 
    "firstName": "", 
    "middleName": "", 
    "lastName": "", 
    "styles": [ 
     { 
      "styleId": 4, 
      "name": "", 
      "description": "", 
      "stylingTime": "55 min", 
      "stylingProductUsage": "A lot", 
      "chemicals": "LOTS O'GEL", 
      "deleted": false, 
      "modifiedOn": 1357161168830 
     }] 

}

這是非常有問題的,因爲返回映射具有款式實體坐在一個陣列內,而不是作爲一個一比一。到目前爲止,我有這個作爲我RKRequestDescriptor

RKObjectMapping *requestMapping = [RKObjectMapping requestMapping]; 
[requestMapping addAttributeMappingsFromDictionary:@{ 
    @"firstName": @"firstName", 
    @"middleName": @"middleName", 
    @"lastName": @"lastName", 
}]; 
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping 
                       objectClass:[Client class] 
                       rootKeyPath:nil]; 

如何赫克我創建映射所以它會返回樣式對象的數組用一個數值???

回答

0

胡亂猜測,但映射是非常聰明的,你不能這樣做:

RKObjectMapping *requestMapping = [RKObjectMapping requestMapping]; 
[requestMapping addAttributeMappingsFromDictionary:@{ 
    @"firstName": @"firstName", 
    @"middleName": @"middleName", 
    @"lastName": @"lastName", 
}]; 

RKObjectMapping *stylesMappingDescription = [RKObjectMapping requestMapping]; 
[requestMapping addAttributeMappingsFromDictionary:@{ 
    @"properties": @"here" 
}]; 

[requestMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"styles.0" toKeyPath:@"styles" withMapping:stylesMappingDescription]]; 

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor  requestDescriptorWithMapping:requestMapping 
                       objectClass:[Client class] 
                      rootKeyPath:nil]; 

(注意styles.0爲fromKeyPath