Is there any way to clear all data stored from the

2019-05-10 19:31发布

问题:

I have an iOS app which stores data in NSUserDefults and many other data is set in cache as a result of web view load, social media signing etc. I want to remove all the data from cache created by the app.

Is there any way to do this programmatically in iOS?

回答1:

Try

 NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
 [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

or

[[NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:[[NSBundle mainBundle] bundleIdentifier]];


回答2:

You could try this

NSUserDefaults

  NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
  [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];

or

NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];
NSDictionary * dict = [defs dictionaryRepresentation];
for (id key in dict) {
    [defs removeObjectForKey:key];
}
[defs synchronize];

UIWebview Cache

[NSURLCache sharedURLCache] removeAllCachedResponses];

//Delete cookies

 for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {

  if([[cookie domain] isEqualToString:someNSStringUrlDomain]) {

    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
  }
 }


回答3:

Try this,

 [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"defunctPreference"];


回答4:

Some of the caches are connected with other apps' information. You should be careful when you delete them. Just remind you to check before operating. I have made the similar stupid mistakes before. If you have found a great tool. Please share! Thanks.



回答5:

You can try using [[NSURLCache sharedURLCache] removeAllCachedResponses];

For more details, refer to link http://iphonedevsdk.com/forum/iphone-sdk-development/104198-programmatically-clearing-app-cache.html



回答6:

If you use NSUserDefaults, you may try this.

In terms of other cache files, I think you should keep all of them in a folder, so that they can be removed easily by removing the whole cache folder.