Restkit Cache策略20.x.

时间:2013-07-01 10:20:13

标签: ios restkit restkit-0.20

非常失望的是,restkit已经删除了新版本中的缓存策略。

我们如何在较新版本中实现相同目标?我们是否可以使用现有的restkit类或其他任何方式来实现它?

2 个答案:

答案 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];