如果新版本与以前版本的数据不向后兼容,那么在升级时确保NSUserDefaults
被删除的最佳方法是什么?
答案 0 :(得分:4)
一种简单的方法是保留一个跟踪升级过程是否已执行的默认值。新版本将检查它,如果尚未设置,请执行升级过程并设置值以确保该过程不会执行两次。像这样:
static NSString * const kUserDefaultsDidUpgradeKey = @"didUpgrade";
NSUserDefaults *ud = NSUserDefaults.standardUserDefaults;
if (![ud boolForKey:kUserDefaultsDidUpgradeKey]) {
// Delete the keys here
[ud setBool:YES forKey:kUserDefaultsDidUpgradeKey];
}
但是,假设您希望将来处理其他版本迁移,更强大的方法是将应用版本编写为用户默认值,以便在更新应用时,新版本可以检查版本密钥看看以前的版本是什么,并相应地运行升级过程。