简体   繁体   English

如何在更新的应用程序上清除NSUserDefaults

[英]How to clear out NSUserDefaults on an updated app

I am using HockeyApp and Ship.io to deploy my ios app to multiple testers on every build. 我正在使用HockeyApp和Ship.io将ios应用程序部署到每个版本上的多个测试人员。 In my latest build, I changed the data types of some objects i was saving into NSUserDefaults, and now it crashes because old data stored on everyones local device clashes with this change. 在我的最新版本中,我更改了一些保存到NSUserDefaults中的对象的数据类型,现在它崩溃了,因为存储在每个本地设备上的旧数据都与此更改冲突。 This crash disappears when a person deletes the app and reinstalls from scratch (bc userdefaults get cleared) 当有人删除该应用程序并从头开始重新安装时,此崩溃消失(bc userdefaults被清除)

I want some kind of clearing logic so that NSUserDefaults get cleared out when people update to latest version. 我想要某种清除逻辑,以便人们更新到最新版本时可以清除NSUserDefaults。 How can I do this? 我怎样才能做到这一点?

I would check if an old key exists and if it does reset the defaults using: 我将检查是否存在旧密钥,并且是否使用以下命令重置了默认值:

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

(Typed on mobile so sorry if the formatting sucks) (在手机上键入内容,如果格式不正确,请抱歉。)

what about something like this? 那这样的东西呢?

-(void)removeNSUserDefaults {


    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults removeObjectForKey:@“yourkey1”];
    [defaults removeObjectForKey:@“yourkey2”];
    //do this for all your keys..
    [defaults synchronize];

}

just remove the objects from the dictionary 只需从字典中删除对象

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM