2013-08-19 58 views
7

有沒有辦法將URL中的參數映射到結果?使用RESTKit將URL參數映射到對象

我得到了一個休息服務,用戶可以通過其ID來搜索某些東西。路徑爲search/:id 結果包含名稱和其他屬性,但不包含ID。

我可以做這樣的事情:

NSArray *array = mappingResult.array; 
for (Item *item in array) { 
     [item setId:itemID]; 
} 

,但我希望有一個更好的方式...

感謝任何提示
Xean

回答

7

您希望使用您在響應描述符中指定的路徑模式。然後,您想在映射期間使用路由(RKRoute)和元數據。元數據包括一個路由部分,可以訪問從URL路徑中提取的參數。

有關元數據的一些信息here(文檔有點缺乏)。

在你的映射要使用:

@metadata.routing.parameters.id 

作爲映射源的關鍵路徑。


爲了讓你需要的路線添加到您的對象管理路由的工作:

[manager.router.routeSet addRoute:... 

然後你需要做的,這意味着該路由的方式請求時,像getObjectsAtPathForRouteNamed:object:parameters:success:failure:

+0

這是正確的方法。我的問題是'@ metadata.routing' dosn't不存在。 – Obenland

+0

你使用的是RKRoute嗎?您需要顯示您的映射,響應描述符和路線配置以獲得更多幫助... – Wain

+0

我的路線是[[RKRoute routeWithClass:[Item class] pathPattern:@「search /:id」method:RKRequestMethodGET];'。 ResponseDescriptor和@ micha-mazaheri寫的一樣。我用@ addAttributeMappingsFromDictionary添加了@Wain的映射:' – Obenland

1

你可能需要指定pathPatternkeyPath您的響應描述符 ::

RKResponseDescriptor *responseDescriptor = 
    [RKResponseDescriptor 
    responseDescriptorWithMapping:itemMapping 
    method:RKRequestMethodAny 
    pathPattern:@"search/:id" 
    keyPath:@"item" 
    statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];