5

我对 restkit 在其较新版本中删除了缓存策略感到非常失望。

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

4

2 回答 2

6

我通过子类化 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;
}
于 2013-09-25T08:52:50.127 回答
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];
于 2013-07-01T10:30:54.667 回答