2012-08-09 48 views
0

假設我必須執行此動態PUT請求: 「http://mydomain.com/api/5?value = 66「如何在Restkit中執行一個PUT請求,但不包含主體,url參數並獲取對象

身體是空的。 我將得到一個201(創建)的狀態,並在身體中我回來了一個json對象, 我們稱之爲MyObject,它具有字段NSNumber * Id,NSString * name;

現在restkit我有以下選擇:

- [[RKObjectManager sharedManager] putObject:nil mapResponseWith:MyMapping delegate:self]; 

MyMapping映射爲MyObject。 的問題是,如果我要送爲零,它不知道的映射,並拋出「無法找到類型的對象可路由路徑,HTTP方法‘把’‘(空)’」

- [[RKClient sharedClient] put:putUrl params:nil delegate:self]; 

其中putUrl = "http://mydomain.com/api/5?value=66" 這裏的問題是,沒有爲響應沒有映射所以只有didLoadResponse叫回並didLoadObjects從不叫

[objectManager.router routeClass:[MyObject class] toResourcePath:putUrl forMethod:RKRequestMethodPUT]; 
    MyObject *obj = [[MyObject alloc] init]; 

    [[RKObjectManager sharedManager] putObject:obj mapResponseWith:MyMapping delegate:self]; 

這裏的問題是,第一,我假的(發送MyObject來作爲PARAM同時不是),它只能在第一次使用。第二次我試圖用這個方法我得到這個異常:「一個路由已經註冊了類'MyObject'和HTTP方法'PUT'」

任何建議該怎麼辦?

感謝

回答

3

如果有人位數的我找到了答案,看到的restkit做了。

putUrl = "http://mydomain.com/api/5?value=66"; 

MyMapping maps the returned MyObject that has fields NSNumber* Id, NSString* name; 

這裏是得到它的工作代碼:

void (^blockLoader)(RKObjectLoader *); 

blockLoader = ^(RKObjectLoader *loader) { 
    loader.delegate = self; 
    loader.objectMapping = MyMapping; 
}; 

NSString *resourcePath = putUrl; 

[[RKObjectManager sharedManager] sendObject:nil toResourcePath:resourcePath usingBlock:^(RKObjectLoader *loader) { 
    loader.method = RKRequestMethodPUT; 
    blockLoader(loader); 
}]; 
相關問題