2013-08-12 55 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并使用该类别请求和所需的路径模式来调用获取对象。