iOS NSNumber二进制表达式的操作数无效(NSNumber *“和'double')

时间:2013-12-22 19:52:44

标签: ios expression nsnumber operands

我有以下代码行

NSNumber *myValue = loadTempValue*0.420;

我尝试将*myValue的值设置为loadTempValue*0.420的值,

但是,我收到错误

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

有人可以建议如何解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

似乎loadTempValue也是NSNumber。在这种情况下,你想要:

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

为什么使用NSNumber个对象来表示这些值?

如果loadTempValuedouble,您可以这样做:

double myValue = loadTempValue * 0.42;

答案 1 :(得分:0)

尝试:

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

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

答案 2 :(得分: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);