我刚开始使用使用RestKit 2.0的代码库。
代码库中的一个问题是很多网络调用很难取消。
我看到一些网络方法很容易将操作返回给调用者,因此调用者可以随意取消它们。但是,界面并不容易支持。有没有人尝试编写自己的类别来揭露返回这些操作?
例如,
- (void)getObjectsAtPath:(NSString *)path
parameters:(NSDictionary *)parameters
success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success
failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure
{
NSParameterAssert(path);
RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:nil method:RKRequestMethodGET path:path parameters:parameters];
[operation setCompletionBlockWithSuccess:success failure:failure];
[self enqueueObjectRequestOperation:operation];
}
看起来像这样:
- (NSOperation *)getObjectsAtPath:(NSString *)path
parameters:(NSDictionary *)parameters
success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success
failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure
{
NSParameterAssert(path);
RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:nil method:RKRequestMethodGET path:path parameters:parameters];
[operation setCompletionBlockWithSuccess:success failure:failure];
[self enqueueObjectRequestOperation:operation];
return operation;
}
如果有人试过这个并遇到问题,请告诉我。
答案 0 :(得分:0)
这不是该过程中涉及的唯一操作。它涉及网络方面,但不涉及映射。这并不意味着它不可能,但它并不像你想象的那么容易。
RKObjectManager
提供了一个界面,用于根据请求取消正在进行的操作,而不是更适合使用的特定操作。