我的代碼的iOS的NSNumber無效的操作數的二進制表達式(的NSNumber *」和‘雙重’)
NSNumber *myValue = loadTempValue*0.420;
其中我想的*myValue
值設置爲的loadTempValue*0.420
值以下行,
不過,我得到了錯誤
Invalid operands to binary expression ('NSNumber *" and 'double')
有人可以建議如何設置?
我的代碼的iOS的NSNumber無效的操作數的二進制表達式(的NSNumber *」和‘雙重’)
NSNumber *myValue = loadTempValue*0.420;
其中我想的*myValue
值設置爲的loadTempValue*0.420
值以下行,
不過,我得到了錯誤
Invalid operands to binary expression ('NSNumber *" and 'double')
有人可以建議如何設置?
似乎loadTempValue
也是一個NSNumber
。在這種情況下,你想:
NSNumber *myValue = @([loadTempValue doubleValue] * 0.420);
你爲什麼要使用NSNumber
對象爲這些價值?
如果loadTempValue
是double
你可能只是這樣做:
double myValue = loadTempValue * 0.42;
謝謝。 loadTempValue由NSNumber * loadTempValue = [defaults objectForKey:@「tempValue」];設置。我從你的評論中認爲這是錯誤的?如果是這樣,我該怎麼做呢? – MrNeilM
你可以這樣做:'double loadTempValue = [defaults doubleForKey:@「tempValue」];'。假設'defaults'是'NSUserDefaults'。 – rmaddy
好的。是的,它是NSUserDefaults。那麼這是更好的(正確)這樣做的方式嗎?我可以問一下推理嗎?就像我更充分理解推理一樣,我更有可能在將來做正確的事情,並讓我記住它! – MrNeilM
loadTempValue
是NSNumber *
和0.420
是float
。你試圖用一個浮點數乘以一個編譯器不理解的對象。
你想要做什麼從loadTempValue
獲得浮點值,然後乘以0.420
。你這樣做,是這樣的:
[loadTempValue floatValue] * 0.420;
從那裏,好像你希望把該值重新進入一個NSNumber *
對象,你是這樣做的:
@([loadTempValue floatValue] * 0.420);
的@(...)
語法最近推出到Objective-C。它被稱爲數字的對象文字符號。這是一種簡寫的寫作方式[NSNumber numberWithFloat: ...]
最後,您需要將結果分配給名爲myValue
的變量;你可以這樣做:
NSNumber *myValue = @([loadTempValue floatValue] * 0.420);
更好的問題是爲什麼你認爲可以給一個對象指針賦一個'double'值? – rmaddy
@rmaddy請你解釋一下嗎? – MrNeilM