5

restkit が新しいバージョンでキャッシュ ポリシーを削除したことに非常に失望しています。

新しいバージョンで同じことを達成するにはどうすればよいですか? これに既存のレストキットクラスを使用することは可能ですか、それとも同じものを実装する他の方法はありますか?

4

2 に答える 2

6

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;
}
于 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 に答える