有没有一种方法可以定义两个或更多具有相同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 -每个请求方法一个。这就是我所做的:
[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)]];

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

我究竟做错了什么?还是有什么办法可以在这里做我想要的?

最佳答案

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

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

08-17 05:29