响应映射以使用动态路径restkit获取对象

时间:2013-08-12 06:26:42

标签: ios restkit-0.20

如何使用路径模式将响应映射设置为管理器..如果路径中的getobjects与用于映射响应的路径模式不同。

[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

A / ID = / getAllCategories / 456

对于123,456,

响应映射是相同的 只有在获取对象时我才使用不同的URL,即:附加了id。  怎么做?

2 个答案:

答案 0 :(得分:3)

如果你有2个路径模式都返回相同类型的数据,那么你可以使用相同的映射与2个不同的响应描述符。

如果您有1个路径模式可以返回2种不同类型的数据,那么您需要使用RKDynamicMapping来“拦截”传入数据并确定实际需要哪个映射。


根据您编辑的问题,'模式'是您误解的重要事项。您需要使用路径模式,而不是静态路径:

@"getAllCategories/:identity"

答案 1 :(得分: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并使用该categoryresquest和所需的路径模式调用get对象。