RestKit 0.20如何POST一个带有嵌套数组的JSON数据

4

我有一个名为Client的对象,看起来像这样。

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

Styles是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];

我该如何创建映射,使其返回一个具有一个值的Style对象数组?
1个回答

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接