有没有一种方法可以定义两个或更多具有相同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)]];
问题是,总是使用第二个(带有
nil
的keyPath
)。即使是GET请求。这真的搞砸了。我究竟做错了什么?还是有什么办法可以在这里做我想要的?
最佳答案
RKObjectManager的具有一种称为 * addResponseDescriptorsFromArray:(NSArray)的方法。您将需要将两个响应描述符都添加到NSArray,然后将NSArray传递给此方法。
您可以在http://restkit.org/api/latest/Classes/RKObjectManager.html#//api/name/addRequestDescriptorsFromArray上找到有关该方法的更多信息: