2010-12-06 73 views
3

我想將float值存儲到NSUserDefaults中。如何在NSUserDefaults中存儲浮點數

我還需要檢查float值是否存在..如果我不需要在它中分配一些值。

並檢索它...對於上述我有下面的代碼,但它給了我一個錯誤。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

if ([defaults boolForKey:@"HANDWRITING_SIZE_SLIDER"] == YES) { 
    self.sizeSlider.value = 10.0; 
} else { 
    self.sizeSlider.value = [[NSUserDefaults standardUserDefaults] floatForKey:@"HANDWRITING_SIZE_SLIDER"]];  
} 

感謝所有幫助

回答

12

通過setObject:forKey:方法使用NSNumber類,這和儲存,所以你可以檢查它是否存在。

我也建議常量的用法鍵:

#define HANDWRITING_SIZE_SLIDER @"HSS" 

你的代碼應該是沿着這些線路:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

if ([defaults objectForKey:HANDWRITING_SIZE_SLIDER] == nil) { 
    //doesn't exist in NSUserDefaults, set to default value... 
    self.sizeSlider.value = 10.0; 
} else { 
    self.sizeSlider.value = [[defaults objectForKey:HANDWRITING_SIZE_SLIDER] floatValue]; 
} 

別的地方在你的應用,您需要設置的值在NSUserDefaults這樣的:

float sizeSliderValue = ... 
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:sizeSliderValue] forKey:HANDWRITING_SIZE_SLIDER]; 
+0

他在else部分向你展示了你。 – 2010-12-06 06:40:02

0

試試這個代碼:

-(IBAction)sliderAction:(id)sender 
{ 
    float sliderValue = [sender floatValue]; 
    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithFloat:sliderValue] forKey:@"keySliderValue"]; 

    NSLog(@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"keySliderValue"]); 
} 
相關問題