2013-02-21 28 views
2

我使用NSUserDefaults來存儲一些應用程序設置。將新設置添加到NSUserDefaults

我需要一些默認值設置爲我的設置。

因此,我增加isAppFirstLaunch價值爲默認值,並在應用程序首次啓動時將所有需要的默認(初始)值來我的設置。

但很多時候我加入一些新的設置。在這種情況下,isAppFirstLaunch is FALSE,我不能設置任何默認值,所以我必須刪除我的應用程序並安裝它。

所以,問題是:如何設定新設置的默認值?


正如我unserstand如果我的應用程序是在AppStore

[[[NSBundle mainBundle] infoDictionary]objectForKey:@"CFBundleVersion"]]; 

比我可以存儲在我的默認應用程序版本,並檢查版本更改設置新的默認值。

但是如何處理調試?我應該總是刪除應用程序來清除錯誤?

+0

這正是[' - [NSUserDefaults registerDefaults:]'](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html# // apple_ref/occ/instm/NSUserDefaults/registerDefaults :)是for。 – 2013-02-21 07:18:59

+0

謝謝,關閉。 – 2013-02-21 07:22:09

回答

1

你可以只檢查設置是否已經存在(如果不是NULL不同),如果它不存在,將其設置爲默認值。

您可以添加代碼到應用程序委託的applicationDidFinishLaunching方法來檢查,如果設置爲NULL,並且是如此,也比它設置它。爲應用程序中的每個設置執行此操作。

+0

不錯的答案,我也考慮過,因爲我檢查應用程序第一次啓動。但是所有的默認值都是int,bool和float。這就是爲什麼floatForKey:或boolForKey:不會返回NULL的原因。 – 2013-02-21 07:16:46

+0

好吧,它會返回零 – byteSlayer 2013-02-21 07:17:32

+0

@george它將返回爲零這些類型 – byteSlayer 2013-02-21 07:18:14