是否有一种方法可以区分由于没有数据而为空的映射结果对关键路径的映射以及由于通过KVC跳过对象而导致的映射结果为空。
我遇到的问题是我正在使用一个经过深思熟虑的API,我需要找到一种方法来了解我何时在页面的末尾。问题是,由于返回的所有对象都被“删除”,因此映射结果可能为空。
TLDR;有没有办法通过在完成的请求上映射结果来查看映射错误的数量。
修改
我通过再次阅读文档解决了我自己的问题。解决方案是创建RKObjectRequestOperation的子类,然后注册它。
[[RKObjectManager sharedManager] registerRequestOperationClass:[CustomRequestOperation class]];
这意味着我可以实现以下内容,它将监听映射错误并增加计数器,并在映射完成时将其添加到mappingMetaData。
- (void)setCompletionBlockWithSuccess:(void ( ^ ) ( RKObjectRequestOperation *operation , RKMappingResult *mappingResult ))success failure:(void (^) ( RKObjectRequestOperation *operation , NSError *error ))failure {
__block typeof(skipCount) temp = skipCount;
[super setCompletionBlockWithSuccess:^void(RKObjectRequestOperation *operation , RKMappingResult *mappingResult) {
if (success) {
operation.mappingMetadata = @{@"skipCount" : @(temp)};
success(operation, mappingResult);
}
} failure:^void(RKObjectRequestOperation *operation , NSError *error) {
if (failure) {
failure(operation, error);
}
}];
}
- (void)mapper:(RKMapperOperation *)mapper didFailMappingOperation:(RKMappingOperation *)mappingOperation forKeyPath:(NSString *)keyPath withError:(NSError *)error {
skipCount++;
}
- (void)mapperWillStartMapping:(RKMapperOperation *)mapper {
skipCount = 0;
}