2010-02-22 158 views
0

我有一个iPhone应用程序,使用NSUserDefault standardUserDefaults存储一些设置。如何在新版本中迁移NSUserDefaults?

当我向应用程序添加新功能时,我需要添加新的默认设置,因此我必须迁移/升级NSUserDefaults。目前,我只需存储版本号,并在应用程序启动时检查。它很快就变得非常混乱,因为我必须添加大量如果陈述。我不能假定用户只是从以前的版本升级,但可能是之前的版本,甚至可能还有一些版本

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

任何建议或最佳实践?

回答

2

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

此外,虽然问题不同,this answer也适用于您的情况。