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