Значение UISlider, преобразованное в NSNumber, = -1,10311e-146.

У AI есть ползунок, я сохраняю его значение по умолчанию, а затем получаю это число в другом представлении. Затем я конвертирую это число с плавающей запятой в NSNumber для использования в фильтре CiRadialGradient.

Я сохраняю значение, например:

[[NSUserDefaults standardUserDefaults] setFloat:_alphaSlider.value forKey:@"Alpha"];

И получение как:

NSNumber *inRadius1 = [NSNumber numberWithFloat:[[NSUserDefaults standardUserDefaults] floatForKey:@"Alpha"]];

Проблема в том, что при захвате значения ползунка и преобразовании его в NSNumber я получаю значение -1.10311e-146. Я ожидал чего-то другого.

В моей раскадровке значение ползунка установлено от 0 до 100. Независимо от того, где я размещаю ползунок, значение всегда большое отрицательное.

Любые идеи?

Ваше здоровье.


person mrEmpty    schedule 14.05.2012    source источник
comment
Вставьте остальную часть кода, где вы сохраняете значение   -  person 8vius    schedule 15.05.2012
comment
Он включен. Регистрация значения ползунка показывает, что оно равно 100, а регистрация полученного значения показывает, что сохранение в порядке. Так что это конверсия, я думаю.   -  person mrEmpty    schedule 15.05.2012


Ответы (1)


Я предполагаю, что вы регистрируете это так:

NSLog(@"%f", inRadius1);

Но на самом деле NSNumber — это объект Objective-C, поэтому вы должны использовать %@:

NSLog(@"%@", inRadius1);
person jtbandes    schedule 14.05.2012
comment
Я регистрирую значение ползунка с помощью %f, но я регистрирую NSNumber с помощью %@. Регистрация с помощью %g дает мне 0. - person mrEmpty; 15.05.2012
comment
Ааа, разобрался. Я сохранял слайдер.значение, а не версию этого значения NSNumber. Преобразование значения в NSNumber, сохранение и работа с этим устранили проблему. Спасибо, что заставили меня пересмотреть. Отмечу это как отвеченное и напишу свои изменения через 8 часов, раньше нельзя :) - person mrEmpty; 15.05.2012