1

如何使用路径模式将响应映射设置为管理器..如果路径处的 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");
}];

响应映射路径 ie:A 必须设置为用于 getobject ie:A/ID 的动态路径。前任:

呼叫 1)

A = /getAllCategories

A/ID = /getAllCategories/123

呼叫 2)

A = /getAllCategories

A/ID = /getAllCategories/456

响应映射对于 123、456 相同,仅在获取我使用不同 url 的对象时,即:附加了 id。怎么做 ?

4

2 回答 2

3

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

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


从您编辑的问题中,“模式”是您误解的重要内容。您需要使用路径模式,而不是静态路径:

@"getAllCategories/:identity"
于 2013-08-12T06:31:25.730 回答
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,并使用该类别请求和所需的路径模式调用 get 对象。

于 2013-08-14T04:32:06.950 回答