NSNumber和浮动?

时间:2011-11-21 16:40:10

标签: iphone objective-c cocoa-touch floating-point nsnumber

我正在尝试将NSNumber设置为使用NSUserDefaults加载的浮点值但我收到错误。我不明白为什么......?

这是我的代码:

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

如果我自己使用浮点数(即float myFloat = [[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]

),它就有效

,但我希望所有视图控制器都可以使用该值,因此我已在模型类中将其定义为NSNumber。

那么,请有人能告诉我为什么这个陈述不起作用?

5 个答案:

答案 0 :(得分:5)

看起来你正试图将一个变量分配给一个getter方法,从你的语法来判断。 floatValue做什么?返回一个值还是分配一个?

答案 1 :(得分:5)

将settingsData作为datamodel类的对象,其中sensitivitySettingValue是使用某些东西声明为NSNumber的变量

[settingsData.sensitivitySettingValue floatValue]

实际上获取其值而不是为其设置浮点值。您可以使用点符号,例如  settingsData.sensitivitySettingValue = [NSNumber numberWithFloat:[[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]];

之类的东西
[settingsData setSensitivitySettingValue:[NSNumber numberWithFloat:[[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]]];

希望有所帮助

答案 2 :(得分:3)

你可以尝试

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

分配值的方法。这是Docs

答案 3 :(得分:2)

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

确保settingsData.sensitivitySettingValue支持setFloatValue方法。

答案 4 :(得分:1)

如果你想从float创建NSNumber:

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

NSUserDefaults也响应objectForKey方法,你可以保存/加载NSNumber而无需强制转换