2011-11-21 64 views
2

我想設置一個NSNumber作爲已經使用NSUserDefaults加載的浮點值,但我收到一個錯誤。我不明白爲什麼......?NSNumber和float?

這裏是我的代碼:

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

它的工作原理,如果我用一個浮點數自身(即float myFloat = [[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]

,但我想在所有視圖控制器提供的價值,所以我已經在它定義模型類作爲一個NSNumber。

所以,請會有人能告訴我,爲什麼這句話不會工作?

+0

什麼類型'self.sensitivitySettingValue'? – beryllium

+0

crikey我曾經是一個noob –

回答

5

採取settingsData爲您的數據模型類的一個對象,其中sensitivitySettingValue是使用的東西聲明爲的NSNumber變量作爲

[settingsData.sensitivitySettingValue floatValue]

實際取它的價值,而不是一個浮動值設置爲它。您可以使用點符號,如 settingsData.sensitivitySettingValue = [NSNumber numberWithFloat:[[NSUserDefaults standardUserDefaults] floatForKey:@"sensitivityKey"]];

什麼作爲

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

希望它可以幫助

+0

謝謝,我收到了你。在那裏失去了一些基本的理解。 –

+0

嘿,你介意看這個問題嗎?認爲我錯過了別的東西... http://stackoverflow.com/questions/8216139/slider-not-behaving-asi-i-would-expect –

5

這看起來像你試圖根據你的語法來判斷一個變量是否爲getter方法。 floatValue是做什麼的?返回一個值或分配一個值?

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

確保settingsData.sensitivitySettingValue支持setFloatValue方法。

+0

如果'settingsData.sensitivitySettingValue'返回一個'NSNumber',這將拋出一個異常,因爲'NSNumber'沒有響應'-setFloatValue:'沒有投票,因爲它不完全清楚返回的對象是該問題的一個NSNumber。 – JeremyP

1

如果你想從浮動創建的NSNumber:

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

NSUserDefaults的也響應objectForKey方法,你可以保存/加載的NSNumber沒有鑄造

3

您可以嘗試

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

方法分配值。這裏是Docs