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 教程? [关闭]