正如您所说,您通常可以使用 RKObjectPaginator。但有时,正如您所说,如果您的 API 不兼容,它就不能很好地工作。
您可以通过执行以下操作来完全自定义分页:
1)创建 RKObjectPaginator 的子类(或者如果你想沿着这条路线走,你自己的类)。
2)关键是重写这个委托方法
- (void) objectLoader:(RKObjectLoader *)loader willMapData:(inout __autoreleasing id *)mappableData;
3) 在此方法中,您获取 mappableData 对象并找到“下一页”参数。不管你怎么做,这取决于你。下面是使用 Bing API 的示例。
- (void) objectLoader:(RKObjectLoader *)loader willMapData:(inout __autoreleasing id *)mappableData {
NSMutableDictionary* d = [[*mappableData objectForKey: @"d"] mutableCopy];
NSString* next = [d objectForKey: @"__next"];
if(!next) {
currentOffset = 0;
}
else {
NSDictionary* params = [next queryParameters];
perPage = [[params objectForKey: @"$top"] intValue];
currentOffset = [[params objectForKey: @"$skip"] intValue];
}
}
重要的是在将数据传递到目标对象之前映射数据。这有效地允许您使用一个响应执行两个映射(一个映射到分页器对象,一个映射到您的数据模型)。