有没有办法将URL中的参数映射到结果?
我有一个休息服务,用户可以通过其ID搜索某些内容。路径为search/:id
结果包含名称和其他属性,但不包含ID。
我可以这样做:
NSArray *array = mappingResult.array;
for (Item *item in array) {
[item setId:itemID];
}
但我希望有一个更好的方式......
感谢任何提示
Xean
答案 0 :(得分:7)
您希望使用在响应描述符中指定的路径模式。然后,您希望在映射期间使用路由(RKRoute
)和元数据。元数据包括一个路由部分,可以访问从URL路径中提取的参数。
关于元数据here的一些信息(文档有点缺乏)。
在您要使用的地图中:
@metadata.routing.parameters.id
作为映射源键路径。
要使路由工作,您需要将路由添加到对象管理器:
[manager.router.routeSet addRoute:...
然后你需要以一种意味着使用路线的方式提出请求,例如getObjectsAtPathForRouteNamed:object:parameters:success:failure:
。
答案 1 :(得分:1)
您可能需要指定 响应描述符的pathPattern
和keyPath
::
RKResponseDescriptor *responseDescriptor =
[RKResponseDescriptor
responseDescriptorWithMapping:itemMapping
method:RKRequestMethodAny
pathPattern:@"search/:id"
keyPath:@"item"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];