非常失望的是,restkit已经删除了新版本中的缓存策略。
我们如何在较新版本中实现相同目标?我们是否可以使用现有的restkit类或其他任何方式来实现它?
答案 0 :(得分:6)
我通过继承RKObjectManager解决了这个问题(如nik答案中链接的第2点所述,但在“{3}”中的“自定义和子类别注释”中更详细地说明了这一点。)
我在子类中添加了以下方法,并且没有更多缓存:
- (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;
}
答案 1 :(得分:1)
您可以使用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];