Restkit 2.0 取消 - 使用它有啥隐藏的问题吗?

Posted

技术标签:

【中文标题】Restkit 2.0 取消 - 使用它有啥隐藏的问题吗?【英文标题】:Restkit 2.0 cancellation - any hidden issues using it?Restkit 2.0 取消 - 使用它有什么隐藏的问题吗? 【发布时间】:2015-06-30 02:38:36 【问题描述】:

我刚开始使用使用 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;

如果有人尝试过这个并遇到问题,请告诉我。

【问题讨论】:

【参考方案1】:

这不是该过程中涉及的唯一操作。它处理网络方面,但不处理映射。这并不意味着它不可能,但它并不一定像你想象的那么容易。

RKObjectManager 提供了一个接口,用于根据请求取消飞行中的操作,而不是更适合使用的具体操作。

【讨论】:

是的,但是如果它们匹配路径,它将取消所有操作。当您有两个视图控制器发出相同的请求并且其中一个取消它时,就会出现问题。

以上是关于Restkit 2.0 取消 - 使用它有啥隐藏的问题吗?的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 2.0 删除 RKManagedObjectStore 但保留 NSManagedObjectModel

在类型的对象上找不到 Restkit 2.0 'managedObjectContext'

如何过早取消 RestKit 中的请求并调用“didFailWithError”

有没有像 raywenderlich 这样的 Restkit 2.0 教程? [关闭]

如何通过 iOS 6 中的 RESTkit 2.0 将 JSON 中的 base64 图像导入核心数据二进制文件?

RestKit 2.0:映射-非唯一时的第二个实体为零