NSNumber и плавать? - PullRequest
       24

NSNumber и плавать?

2 голосов
/ 21 ноября 2011

Я пытаюсь установить NSNumber в качестве значения с плавающей запятой, которое было загружено с использованием NSUserDefaults, но я получаю ошибку.Я не могу понять, почему ...?

Вот мой код:

[settingsData.sensitivitySettingValue floatValue] = [[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"];

Это работает, если я использую поплавок самостоятельно (то есть float myFloat = [[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]

, но я хочу, чтобы значение было доступно во всех контроллерах представления, поэтому я определил его в классе модели как NSNumber.

Итак, кто-нибудь может посоветовать мне, почему этот оператор не работает?

Ответы [ 5 ]

5 голосов
/ 21 ноября 2011

беря settingsData как объект вашего класса данных, где SensSettingValue - это переменная, объявленная как NSNumber, использующая что-то как

[settingsData.sensitivitySettingValue floatValue]

, на самом деле выбирает его значение, а не устанавливает для него значение с плавающей точкой,Вы можете использовать точечную запись, такую ​​как settingsData.sensitivitySettingValue = [NSNumber numberWithFloat:[[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]];

или что-то вроде

[settingsData setSensitivitySettingValue:[NSNumber numberWithFloat:[[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]]];

Надеюсь, это поможет

5 голосов
/ 21 ноября 2011

Похоже, вы пытаетесь присвоить переменную методу getter, судя по вашему синтаксису.Что делает floatValue?Вернуть значение или назначить его?

3 голосов
/ 21 ноября 2011

Вы можете попробовать

+ (NSNumber *)numberWithFloat:(float)value;

метод присвоения значения. Вот Документы .

2 голосов
/ 21 ноября 2011
[settingsData.sensitivitySettingValue setFloatValue:[[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]];

Убедитесь, что settingsData.sensitivitySettingValue поддерживает метод setFloatValue.

1 голос
/ 21 ноября 2011

Если вы хотите создать NSNumber из числа с плавающей точкой:

float myFloat = [[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"];
NSNumber *number = [NSNumber numberWithFloat:myFloat];
// settingsData.sensitivitySettingValue = number; - not sure in type of properties

NSUserDefaults также реагирует на метод objectForKey, вы можете сохранить / загрузить NSNumber без приведения

...