我正在使用RestKit进行webservice调用,缓存和etags。 我实现了自己的coredata模型和managedObjects
用户退出后,我需要清除数据库中的所有数据。 我能够成功删除sqlite文件并重新创建它,但我找不到清除所有RestKit捕获和etag数据的方法。 如何完全擦除RestKit存储的所有数据?
答案 0 :(得分:14)
您想要调用[[RKClient sharedClient].requestCache invalidateAll];
来清除缓存。您可以查看API docs。
答案 1 :(得分:4)
使用RKManagedObjectStore类中的以下方法。
- (void)deletePersistantStoreUsingSeedDatabaseName:(NSString *)seedFile
答案 2 :(得分:2)
在Restkit 0.20中 试试这个:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
为我工作=)
答案 3 :(得分:1)
在RestKit 0.20.2中,以下示例可以解决问题。它基于代码在RKTestFactory.m文件的RestKit / Testing组件中找到,并且在我的项目中运行良好。
此外,如果RestKit正在管理您的CoreData堆栈,这是我的设置方式,请记住删除在RestKit设置中使用NSManagedObjectContext的任何NSFetchedResultsController。
- (void)tearDownRestKit
{
// Cancel any network operations and clear the cache
[[RKObjectManager sharedManager].operationQueue cancelAllOperations];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
// Cancel any object mapping in the response mapping queue
[[RKObjectRequestOperation responseMappingQueue] cancelAllOperations];
// Ensure the existing defaultStore is shut down
[[NSNotificationCenter defaultCenter] removeObserver:[RKManagedObjectStore defaultStore]];
// Not be needed if not using indexer
if ([[RKManagedObjectStore defaultStore] respondsToSelector:@selector(stopIndexingPersistentStoreManagedObjectContext)]) {
// Search component is optional
[[RKManagedObjectStore defaultStore] performSelector:@selector(stopIndexingPersistentStoreManagedObjectContext)];
if ([[RKManagedObjectStore defaultStore] respondsToSelector:@selector(searchIndexer)]) {
id searchIndexer = [[RKManagedObjectStore defaultStore] valueForKey:@"searchIndexer"];
[searchIndexer performSelector:@selector(cancelAllIndexingOperations)];
}
}
[RKObjectManager setSharedManager:nil];
[RKManagedObjectStore setDefaultStore:nil];
}