2014-05-11 82 views
0

我有一個看起來像這樣的請求匹配:RestKit - 路徑與查詢字符串

/products?page=:page&perPage=:perPage 

我怎樣組織我的路徑匹配,這樣調用

[[RKObjectManager sharedManager] cancelAllObjectRequestOperationsWithMethod:RKRequestMethodGET matchingPathPattern:@"/products"]; 

這時候會發現這些路徑似乎不符合這種模式。如何設置我的matchingPathPattern參數以匹配這些請求?

回答

0

我通常會創建命名路線。 Reskit路由器提供了許多不同的幫助器方法,可以通過多種方式簡化任務。創建一個名爲像這樣的路線,

#define ProductsRoute @"ProductsRoute" 

RKRoute *productsRoute = [RKRoute routeWithName:ProductsRoute pathPattern:@"/products?page=:page&perPage=:perPage" method:RKRequestMethodGET]; 

添加到routeSet路線,

[[[RKObjectManager sharedManager].router routeSet] addRoute:productsRoute]; 

現在,讓我們創建一個輔助方法,如果涉及到某些命名的路線,將取消該請求的路徑,

- (void)cancelRequestToUrlWithRouteName:(NSString*)routeName{ 
RKRoute *route = [[[[RKObjectManager sharedManager] router] routeSet] routeForName:routeName]; 
    [self cancelAllRequestWithMethod:route.method matchingPath:route.pathPattern]; 
} 

然後調用它,每當你想取消請求某些URL,

[self cancelRequestToUrlWithRouteName:ProductsRoute]; 

我希望這也適用於你的情況。 注意我沒有顯示添加responseManager到objectManager。正如你一直使用的那樣,你會添加正常的響應描述符和paginator映射。

+0

您是否嘗試過使用URL查詢中的參數? SoKit通常不會處理查詢部分中的任何參數。 – Wain

+0

@歡雅我不太清楚如何將這個應用於我的案例。有沒有辦法通配我的取消,這樣它將取消對/產品的呼叫,但不會有其他可能未完成的呼叫? –

+0

路徑模式通常是通配符,但我認爲它不會與查詢參數一起使用。 – Wain