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

How to force delete NSUserDefaults when app is updated?

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

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

static NSString * const kUserDefaultsDidUpgradeKey = @"didUpgrade";

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

但是,假设您将来要处理其他版本迁移,更稳健的方法是将应用程序版本写入用户默认值,以便在更新应用程序时,新版本可以检查版本查看以前版本的关键,运行相应的升级过程。