如何使用路径模式将响应映射设置为管理器..如果路径中的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。 怎么做?
答案 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对象。