restkit が新しいバージョンでキャッシュ ポリシーを削除したことに非常に失望しています。
新しいバージョンで同じことを達成するにはどうすればよいですか? これに既存のレストキットクラスを使用することは可能ですか、それとも同じものを実装する他の方法はありますか?
restkit が新しいバージョンでキャッシュ ポリシーを削除したことに非常に失望しています。
新しいバージョンで同じことを達成するにはどうすればよいですか? これに既存のレストキットクラスを使用することは可能ですか、それとも同じものを実装する他の方法はありますか?
RKObjectManager をサブクラス化することでこの問題を解決しました (nik の回答のリンクの 2 番目のポイントで概説されていますが、 「カスタマイズとサブクラス化に関する注意事項」の下のドキュメントでもう少し詳しく指定されています)。
サブクラスに次のメソッドを追加したところ、キャッシュがなくなりました。
- (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];