如何在新版本中迁移NSUserDefaults?

时间:2010-02-22 13:27:49

标签: iphone preferences nsuserdefaults

我有一个iPhone应用程序,使用NSUserDefault standardUserDefaults存储一些设置。

当我向应用添加新功能时,我需要添加新的默认设置,因此我必须迁移/升级NSUserDefaults。现在,我只是存储版本号并在启动应用程序时检查此项。它很快变得非常混乱,因为我必须添加大量 if 语句。我不能假设用户只是从以前的版本升级,但甚至可能是以前的几个版本

我喜欢CoreData似乎处理迁移表更改的方式,但我想提供2.2.1 SDK兼容性,当然CoreData与NSUserDefaults不同。

有任何建议或最佳做法吗?

1 个答案:

答案 0 :(得分:2)

嗯......我不会以这种方式“升级”用户默认值,而是像往常一样查询NSUserDefaults,只有在未设置默认值时(objectForKey在这种情况下将返回nil),使用默认值(然后可以写回用户默认值以节省下次的时间)。由于每次读取“新”默认值(即1.0中不存在的默认值)时都必须这样做,我建议做一个包装类/文件,这样做,这样代码只写一次每个“新”默认值。

此外,虽然问题/问题不同,但this answer在你的情况下同样适用。