Как хранить поплавок в NSUserDefaults - PullRequest
3 голосов
/ 06 декабря 2010

Я хочу сохранить значение 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"]];      
}

Спасибо за любую помощь

Ответы [ 2 ]

12 голосов
/ 06 декабря 2010

Используйте для этого класс 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];
0 голосов
/ 10 декабря 2013

Попробуйте этот код:

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

    NSLog(@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"keySliderValue"]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...