我有一个iPhone应用程序,使用NSUserDefault standardUserDefaults
存储一些设置。
当我向应用添加新功能时,我需要添加新的默认设置,因此我必须迁移/升级NSUserDefaults
。现在,我只是存储版本号并在启动应用程序时检查此项。它很快变得非常混乱,因为我必须添加大量 if 语句。我不能假设用户只是从以前的版本升级,但甚至可能是以前的几个版本。
我喜欢CoreData似乎处理迁移表更改的方式,但我想提供2.2.1 SDK兼容性,当然CoreData与NSUserDefaults
不同。
有任何建议或最佳做法吗?
答案 0 :(得分:2)
嗯......我不会以这种方式“升级”用户默认值,而是像往常一样查询NSUserDefaults,只有在未设置默认值时(objectForKey在这种情况下将返回nil),使用默认值(然后可以写回用户默认值以节省下次的时间)。由于每次读取“新”默认值(即1.0中不存在的默认值)时都必须这样做,我建议做一个包装类/文件,这样做,这样代码只写一次每个“新”默认值。
此外,虽然问题/问题不同,但this answer在你的情况下同样适用。