如何更新应用程序时强制删除NSUserDefaults?

时间:2015-01-08 03:52:42

标签: ios objective-c nsuserdefaults

如果新版本与以前版本的数据不向后兼容,那么在升级时确保NSUserDefaults被删除的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

一种简单的方法是保留一个跟踪升级过程是否已执行的默认值。新版本将检查它,如果尚未设置,请执行升级过程并设置值以确保该过程不会执行两次。像这样:

static NSString * const kUserDefaultsDidUpgradeKey = @"didUpgrade";

NSUserDefaults *ud = NSUserDefaults.standardUserDefaults;
if (![ud boolForKey:kUserDefaultsDidUpgradeKey]) {
    // Delete the keys here
    [ud setBool:YES forKey:kUserDefaultsDidUpgradeKey];
}

但是,假设您希望将来处理其他版本迁移,更强大的方法是将应用版本编写为用户默认值,以便在更新应用时,新版本可以检查版本密钥看看以前的版本是什么,并相应地运行升级过程。