我对 restkit 在其较新版本中删除了缓存策略感到非常失望。
我们如何在新版本中实现相同的目标?我们是否可以为此使用现有的restkit类或任何其他方式来实现相同的功能?
我对 restkit 在其较新版本中删除了缓存策略感到非常失望。
我们如何在新版本中实现相同的目标?我们是否可以为此使用现有的restkit类或任何其他方式来实现相同的功能?
我通过子类化 RKObjectManager 解决了这个问题(如 nik 答案中链接的第二点所述,但在“自定义和子类化注释”下的文档中更详细地指定)。
我在子类中添加了以下方法,并且没有更多的缓存:
- (NSMutableURLRequest *)requestWithObject:(id)object method:(RKRequestMethod)method path:(NSString *)path parameters:(NSDictionary *)parameters
{
NSMutableURLRequest *request = [super requestWithObject:object method:method path:path parameters:parameters];
request.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;
return request;
}
您可以使用 NSMutableURLRequest 创建 RKManagedObjectRequestOperation 并设置 request.cachePolicy:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path relativeToURL:self.baseURL]];
request.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;
RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:[RKObjectManager sharedManager].responseDescriptors];
operation.managedObjectContext = [[RKManagedObjectStore defaultStore] newChildManagedObjectContextWithConcurrencyType:NSPrivateQueueConcurrencyType tracksChanges:YES];
operation.managedObjectCache = [RKManagedObjectStore defaultStore].managedObjectCache;
[operation setCompletionBlockWithSuccess:success failure:failure];
NSOperationQueue *operationQueue = [NSOperationQueue new];
[operationQueue addOperation:operation];