RestKit用于同一pathPattern的多个响应描述符

时间:2014-08-20 14:28:51

标签: ios objective-c restkit

有没有办法定义两个或多个响应描述符都具有相同的pathPattern?我的假设是,它们不仅会基于pathPattern,还会基于method。但显然事实并非如此。

这是我的对象映射:

RKObjectMapping *commentMapping = [RKObjectMapping mappingForClass:[Comment class]];
[commentMapping addAttributeMappingsFromArray:@[@"comment", @"rating", @"views", @"venue", @"user_views"]];

当我发出GET请求时,我会得到一个与此类似的列表:

{
    'meta': {
        'total_objects': 2,
        'limit': 20,
        ...
    },
    'objects': [
         {
             'comment': '...',
             'rating': 3.5,
             ...
         },
         ...
    ]
}

当我做一个POST请求来创建一个新对象时,我会回到这样的事情:

{
    'comment': '...',
    'rating': 3.5,
    ...
}

所以我想要做的是定义两个不同的responseDescriptor s - 每个请求方法一个。所以这就是我所做的:

[objectManager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:commentMapping
                                                                                  method:RKRequestMethodGET
                                                                             pathPattern:@"comment/"
                                                                                 keyPath:@"objects"
                                                                             statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]];

[objectManager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:commentMapping
                                                                                  method:RKRequestMethodPOST
                                                                             pathPattern:@"comment/"
                                                                                 keyPath:nil
                                                                             statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]];

问题是,总是使用第二个(具有nil keyPath的那个)。即使是GET请求。这真的搞砸了。

我做错了什么?或者甚至有什么方法可以做我想要的事情吗?

1 个答案:

答案 0 :(得分:0)

RKObjectManager 有一个名为 * addResponseDescriptorsFromArray :( NSArray 的方法。您需要将两个响应描述符添加到NSArray,然后将NSArray传递给此方法。

您可以在此处找到有关此方法的更多信息http://restkit.org/api/latest/Classes/RKObjectManager.html#//api/name/addRequestDescriptorsFromArray