2013-08-12 92 views
1

如何將響應映射設置爲具有路徑模式的管理器..如果路徑中的getobjects與用於映射響應的路徑模式不同。使用動態路徑獲取對象的響應映射restkit

[manager addResponseDescriptorsFromArray: 
@[[RKResponseDescriptor responseDescriptorWithMapping:categoryMapping 
pathPattern:A 
keyPath:nil 
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]]]; 



[manager getObjectsAtPath:A/ID 
parameters:nil 
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
NSLog(@" Category success"); 
[self.delegate didReceiveAssignedCategories]; 
} 
failure:^(RKObjectRequestOperation *operation, NSError *error) { 
NSLog(@"Category failure"); 
}]; 

響應映射路徑即:必須將A設置爲用於getobject的動態路徑,即:A/ID。 例如:

呼叫1)

A =/getAllCategories

A/ID =/getAllCategories/123

呼叫2)

A =/getAllCategories

甲/ ID =/getAllCategories/456

響應映射對於123,456 只有在獲取對象時使用了不同的url,即:帶有id的附件。 該怎麼辦?

回答

3

如果您有2個路徑模式都返回相同類型的數據,那麼您可以使用具有2個不同響應描述符的相同映射。

如果您有1個路徑模式可以返回2種不同類型的數據,那麼您需要使用RKDynamicMapping'截取'傳入數據並決定實際需要哪種映射。


從你編輯的問題,'模式'是你誤會的重要事情。您需要使用的路徑模式,而不是一個靜態的路徑:

@"getAllCategories/:identity" 
+0

有兩種不同的映射...只有一個映射不同getobjectatpath網址和URL的動態:附帶ID的 –

+0

我沒有得到迴應ID .. –

+0

您需要知道從第一個身份如果您打算在第二個請求中使用它,請回復。 – Wain

0

1)首先創建一個像

[manager addResponseDescriptorsFromArray: 
@[[RKResponseDescriptor responseDescriptorWithMapping:categoryMapping 
pathPattern:@"getAllCategories/:categoryID" 
keyPath:nil 
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]]]; 

2響應映射)用的categoryID在它創建類。

[CategoryRequest class] 

3)創建該類的對象,並設置的categoryID

CategoryRequest *categoryRequest = [CategoryRequest alloc] init]; 
categoryRequest.categoryID = @"123"; 

4)如果需要另一個呼叫撥打的getObject使用該對象

[manager getObject:categoryRequest 
path:@"getAllCategories/123" 
parameters:params 
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
       NSLog(@"Success"); 
    } failure:^(RKObjectRequestOperation *operation, NSError *error) { 
     NSLog(@"Failure"); 
    }]; 

爲相同的映射創建制成類別請求類的對象設置新的類別ID並使用該類別請求和所需的路徑模式來調用獲取對象。