【问题标题】:How to clear out NSUserDefaults on an updated app如何在更新的应用程序上清除 NSUserDefaults
【发布时间】:2015-03-08 17:08:18
【问题描述】:

我正在使用 HockeyApp 和 Ship.io 将我的 ios 应用程序部署到每个构建的多个测试人员。在我的最新版本中,我更改了一些我保存到 NSUserDefaults 中的对象的数据类型,现在它崩溃了,因为存储在每个人本地设备上的旧数据与此更改发生冲突。当一个人删除应用程序并从头开始重新安装时,这种崩溃就会消失(bc userdefaults 被清除)

我想要某种清除逻辑,以便在人们更新到最新版本时清除 NSUserDefaults。我怎样才能做到这一点?

【问题讨论】:

    标签: ios objective-c nsuserdefaults hockeyapp


    【解决方案1】:

    我会检查是否存在旧密钥以及是否重置默认值:

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

    (在手机上打字,如果格式不好,请见谅)

    【讨论】:

      【解决方案2】:

      这样的事情呢?

      -(void)removeNSUserDefaults {
      
      
          NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
      
          [defaults removeObjectForKey:@“yourkey1”];
          [defaults removeObjectForKey:@“yourkey2”];
          //do this for all your keys..
          [defaults synchronize];
      
      }
      

      只需从字典中删除对象

      【讨论】:

      • 但我不想在每次用户启动应用程序时删除。如果我这样做,我只想在有人将应用程序更新到最新版本后才这样做。关于我应该使用的逻辑的任何想法?也许制作一个全新的布尔键来跟踪某人是否曾经迁移到新应用?
      • 是的,“第一次启动”的布尔键是这样做的一种方式
      猜你喜欢
      • 2014-09-19
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 2010-10-07
      • 1970-01-01
      相关资源
      最近更新 更多