我不斷收到寫着如何做數學與NSNumbers
錯誤「初始化‘的NSNumber * __強烈的’不兼容類型的表達式‘雙’」
我的繼承人公式:
{
NSNumber *nAt3 = (-1*(([RSSIvalue integerValue] - [aValue integerValue])/(10*log10(3))));
}
RSSIvalue和aValue都是NSNumber類型的對象。
我如何聲明nAt3的方式,將使這項工作?
我不斷收到寫着如何做數學與NSNumbers
錯誤「初始化‘的NSNumber * __強烈的’不兼容類型的表達式‘雙’」
我的繼承人公式:
{
NSNumber *nAt3 = (-1*(([RSSIvalue integerValue] - [aValue integerValue])/(10*log10(3))));
}
RSSIvalue和aValue都是NSNumber類型的對象。
我如何聲明nAt3的方式,將使這項工作?
使用@()
到數字轉換爲NSNumber
只是一個或多個字符
{
NSNumber *nAt3 = @(-1*(([RSSIvalue integerValue] - [aValue integerValue])/(10*log10(3))));
}
。例如@(1+1)
給你的東西一樣[NSNumber numberWithInt:(1+1)]
你的計算結果是雙,所以你需要將其分配給NAT2之前將其轉換成一個NSNumber:
NSNumber *nAt3 = [NSNumber numberWithDouble:(-1*(([RSSIvalue integerValue] - [aValue integerValue])/(10*log10(3))))];
編譯器指令的解釋感謝rdelmar,但bryan擊敗雅它 – ian
你不能做數學與NSNumber
「但是你可以用他們代表的數字來計算數學。這就是爲什麼你有兩個電話integerValue
- 這將您從NSNumber
的域名移動到NSInteger
域名,然後你做數學。
缺少的是從數字移回NSNumber
- 用現代語法做的事情可以只包含您的表達式在@(...)
,您的情況是[NSNumber numberWithDouble:(...)]
的簡寫。
哦好吧謝謝你的解釋 – ian
哇這樣一個簡單的解決方案。謝謝布萊恩! – ian
只是添加到這個解決方案,使用@,http://nshipster.com/at-compiler-directives/ – Tim