简体   繁体   English

NSNumber和浮动?

[英]NSNumber and float?

I am trying to set an NSNumber as a float value that has been loaded using NSUserDefaults but i'm getting an error. 我试图将NSNumber设置为使用NSUserDefaults加载的浮点值但我收到错误。 I can't understand why...? 我不明白为什么......?

Here's my code: 这是我的代码:

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

It works if I use a float on its own (ie float myFloat = [[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"] 如果我自己使用浮点数(即float myFloat = [[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]

, but I want the value available across all view controllers so I have defined it in a model class as an NSNumber. ,但我想要所有视图控制器都可用的值,所以我在模型类中将它定义为NSNumber。

So, please would anyone be able to advise me on why that statement wont work? 那么,请任何人能够告诉我为什么这个声明不起作用?

That looks like you're trying to assign a variable to a getter method, judging by your syntax. 看起来你正试图将一个变量分配给一个getter方法,从你的语法来判断。 What does floatValue do? floatValue做什么? Return a value or assign one? 返回一个值还是分配一个?

taking settingsData as an object of your datamodel class where sensitivitySettingValue is a variable declared as NSNumber using something as 将settingsData作为datamodel类的对象,其中sensitivitySettingValue是一个声明为NSNumber的变量,使用的东西为

[settingsData.sensitivitySettingValue floatValue]

actually fetches its value rather than setting a float value to it . 实际上获取其值而不是为其设置浮点值。 You can either use the dot notation such as settingsData.sensitivitySettingValue = [NSNumber numberWithFloat:[[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]]; 您可以使用点表示法,例如settingsData.sensitivitySettingValue = [NSNumber numberWithFloat:[[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]];

or something as 或者像

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

Hope it helps 希望能帮助到你

You can try 你可以试试

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

method to assign the value. 分配值的方法。 Here is the Docs . 这是Docs

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

确保settingsData.sensitivitySettingValue支持setFloatValue方法。

If you want to create NSNumber from float: 如果要从float创建NSNumber:

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

NSUserDefaults also responds to objectForKey method, you can save/load NSNumber without casting NSUserDefaults也响应objectForKey方法,你可以保存/加载NSNumber而不需要强制转换

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM