【问题标题】:How to store a float in NSUserDefaults如何在 NSUserDefaults 中存储浮点数
【发布时间】:2010-12-06 05:57:47
【问题描述】:

我想将float 值存储到NSUserDefaults

我还需要检查浮点值是否存在。如果不存在,我需要在其中分配一些值。

并检索它...对于上面我有下面的代码,但它给了我一个错误。

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"]];      
}

感谢您的帮助

【问题讨论】:

    标签: iphone objective-c ios iphone-sdk-3.0 nsuserdefaults


    【解决方案1】:

    为此使用NSNumber 类并通过setObject:forKey: 方法存储它,以便您检查它是否存在。

    我还建议使用常量作为键:

    #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];
    

    【讨论】:

      【解决方案2】:

      试试这个代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        相关资源
        最近更新 更多