2010-04-10 60 views
2

我已經設置了用戶默認爲UISlider記錄一個整數,問題是,如果用戶只是剛剛安裝了應用程序,那麼整數是零或NULL。有沒有一種方法來檢測它是否爲NULL與整數?IPhone SDK默認NSUserDefaults

繼承人我的代碼至今:

-(void)awakeFromNib { 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
senset = [prefs integerForKey:@"senset"]; 
senset = sensitivity.value; 
} 
- (IBAction) setSens { 
senset = sensitivity.value; 
} 
- (IBAction) goBackopt { 
{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setInteger:senset forKey:@"senset"]; 
    [prefs synchronize]; 
} 

} 

senset是整數。我曾嘗試這個代碼,並且將其設置到25日的第一次,但當時如果我嘗試和覆蓋它,它不會工作,並保持其設置爲25 :(

if ([prefs integerForKey:@"senset"] == NULL) { 
    senset = 25;  
} 

請幫助:P

哈利

回答

1

只求objectForKey :.如果沒有設置,它將返回零

您的測試是不行的,因爲integerForKey:與未設定值將返回0,這是nil,它是NULL,它們之間的差異只對編譯器有效

1

如果在正常使用情況下零(零)不是有效值(即,您保存的偏好永遠不會設置此整數零),那麼你可以檢查

if([prefs integerForKey:@"senset"] == 0){ 
    [prefs setInteger:25 forKey:@"senset"]; 
} 

編輯:錯了,我想我有一個問題:當您試圖覆蓋它,你要爲一個整數值(25)爲你的鑰匙(@「senset」)?如果不是,那麼它將保持爲零或零,並且每次檢查它都會嘗試將您的本地senset變量再次更改爲25。

4

您應該爲每個偏好設置一個有效的默認值。當用戶尚未設置此值時將使用此值。

NSMutableDictionary *defaults = [NSMutableDictionary dictionary]; 
[defaults setObject:[NSNumber numberWithInt:25] forKey:@"senset"]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];