2010-02-22 79 views
0

我有一個iPhone應用程序,使用NSUserDefault standardUserDefaults存儲一些設置。如何在新版本中遷移NSUserDefaults?

當我向應用程序添加新功能時,我需要添加新的默認設置,因此我必須遷移/升級NSUserDefaults。目前,我只需存儲版本號,並在應用程序啓動時檢查。它很快就變得非常混亂,因爲我必須添加大量如果陳述。我不能假定用戶只是從以前的版本升級,但可能是之前的版本,甚至可能還有一些版本

我喜歡CoreData似乎處理遷移表更改的方式,但我想提供2.2.1 SDK兼容性,當然CoreData與NSUserDefaults不同。

任何建議或最佳實踐?

回答

2

嗯...我不會像這樣通過「升級」用戶默認值,而是像往常一樣查詢NSUserDefaults,只要默認值沒有設置(objectForKey在這種情況下將返回nil),使用默認值(然後可以將其寫回到用戶默認設置以節省下次的時間)。由於每次讀取「新」默認值(即1.0中不存在的默認值)時都必須這樣做,所以我建議做一個包裝類/文件來完成此操作,這樣代碼只寫一次每個「新」默認。

此外,雖然問題不同,this answer也適用於您的情況。