2013-12-22 66 views
0

我的代碼的iOS的NSNumber無效的操作數的二進制表達式(的NSNumber *」和‘雙重’)

NSNumber *myValue = loadTempValue*0.420; 

其中我想的*myValue值設置爲的loadTempValue*0.420值以下行,

不過,我得到了錯誤

Invalid operands to binary expression ('NSNumber *" and 'double')

有人可以建議如何設置?

+0

更好的問題是爲什麼你認爲可以給一個對象指針賦一個'double'值? – rmaddy

+0

@rmaddy請你解釋一下嗎? – MrNeilM

回答

3

似乎loadTempValue也是一個NSNumber。在這種情況下,你想:

NSNumber *myValue = @([loadTempValue doubleValue] * 0.420); 

你爲什麼要使用NSNumber對象爲這些價值?

如果loadTempValuedouble你可能只是這樣做:

double myValue = loadTempValue * 0.42; 
+0

謝謝。 loadTempValue由NSNumber * loadTempValue = [defaults objectForKey:@「tempValue」];設置。我從你的評論中認爲這是錯誤的?如果是這樣,我該怎麼做呢? – MrNeilM

+0

你可以這樣做:'double loadTempValue = [defaults doubleForKey:@「tempValue」];'。假設'defaults'是'NSUserDefaults'。 – rmaddy

+0

好的。是的,它是NSUserDefaults。那麼這是更好的(正確)這樣做的方式嗎?我可以問一下推理嗎?就像我更充分理解推理一樣,我更有可能在將來做正確的事情,並讓我記住它! – MrNeilM

0

嘗試:

NSNumber *myValue = @([loadTempValue doubleValue] * 0.420);

NSNumber *myValue = [NSNumber numberWithDouble:([loadTempValue doubleValue] * 0.420)];

+0

兩者都給出相同的錯誤? – MrNeilM

+0

什麼是'loadTempValue'? – runmad

0

loadTempValueNSNumber *0.420float。你試圖用一個浮點數乘以一個編譯器不理解的對象。

你想要做什麼從loadTempValue獲得浮點值,然後乘以0.420。你這樣做,是這樣的:

[loadTempValue floatValue] * 0.420; 

從那裏,好像你希望把該值重新進入一個NSNumber *對象,你是這樣做的:

@([loadTempValue floatValue] * 0.420); 

@(...)語法最近推出到Objective-C。它被稱爲數字的對象文字符號。這是一種簡寫的寫作方式[NSNumber numberWithFloat: ...]

最後,您需要將結果分配給名爲myValue的變量;你可以這樣做:

NSNumber *myValue = @([loadTempValue floatValue] * 0.420); 
相關問題