无法添加与现有路由具有相同类和方法的路由

时间:2013-04-21 22:23:00

标签: objective-c restkit

我正在尝试添加路由但是“无法添加与现有路由具有相同类和方法的路由。”

我有一个类具有相同的Post方法,但当然使用不同的方法。当我尝试运行我的应用程序时,我收到上述错误。有没有办法用通用方法设置路线?

[objectManager.router.routeSet addRoute:[RKRoute routeWithClass:[Thing class]
                                                    pathPattern:@"v1/things/update_location.json.json" method:RKRequestMethodPOST]];

[objectManager.router.routeSet addRoute:[RKRoute routeWithClass:[Thing class]
                                                    pathPattern:@"v1/things.json" method:RKRequestMethodPOST]];

以上是Restkit的副本,因为它使用相同的类“Thing”,因为Method是相同的?是什么给了什么?

2 个答案:

答案 0 :(得分:1)

路由器用于在给定对象(在这种情况下为Thing的实例)时构建请求。为了使其工作,当您要求RestKit发布对象时,只能有一个选项。需要根据命名路由或关系路由来描述任何其他路由,以保持路由集的唯一性。

您可以查看文档here,它描述了“路由生成”部分中定义路由器的所有3种方法(您目前只使用方法2)。您很可能想要定义一些命名路由,这些路由描述了您尝试通过每次上传实现的差异。

答案 1 :(得分:1)

如果它可以帮助任何人使用代码,那么下面是如何使用名称设置路径。

// When you are setting up your mapping, set up Route with Name.
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:userMapping
                                                                                            method:RKRequestMethodGET
                                                                                       pathPattern:LOGIN_URL
                                                                                           keyPath:nil
                                                                                       statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[[RKObjectManager sharedManager].router.routeSet addRoute:[RKRoute routeWithName:LOGIN_ROUTE pathPattern:LOGIN_URL method:RKRequestMethodGET]];
[[RKObjectManager sharedManager] addResponseDescriptor:responseDescriptor];


// And when you are ready to make the http call, do the following
[[RKObjectManager sharedManager] getObjectsAtPathForRouteNamed:LOGIN_ROUTE
                                                        object:userProfile
                                                    parameters:params
                                                       success:success
                                                       failure:failure];