iOS NSNumber二进制表达式的无效操作数(NSNumber*”和';双';)
我有下面一行代码iOS NSNumber二进制表达式的无效操作数(NSNumber*”和';双';),ios,expression,nsnumber,operands,Ios,Expression,Nsnumber,Operands,我有下面一行代码 NSNumber *myValue = loadTempValue*0.420; 当我试图将*myValue的值设置为loadTempValue*0.420的值时 但是,我得到了错误 二进制表达式('NSNumber*“和'double')的操作数无效。 有人能告诉我怎么做吗?试试: NSNumber*myValue=@([loadTempValue doubleValue]*0.420); 或 NSNumber*myValue=[NSNumber numberWithDou
NSNumber *myValue = loadTempValue*0.420;
当我试图将*myValue
的值设置为loadTempValue*0.420
的值时
但是,我得到了错误
二进制表达式('NSNumber*“和'double')的操作数无效。
有人能告诉我怎么做吗?试试:
NSNumber*myValue=@([loadTempValue doubleValue]*0.420);
或
NSNumber*myValue=[NSNumber numberWithDouble:([loadTempValue doubleValue]*0.420)];
似乎loadTempValue
也是一个NSNumber
。在这种情况下,您需要:
NSNumber *myValue = @([loadTempValue doubleValue] * 0.420);
为什么要对这些值使用NSNumber
对象
如果loadTempValue
是一个double
,您可以执行以下操作:
double myValue = loadTempValue * 0.42;
loadTempValue
是一个NSNumber*
,0.420
是一个float
。您试图将一个对象乘以编译器不理解的float
您要执行的操作是从loadTempValue
获取浮点值,然后将其乘以0.420
。您可以这样做:
[loadTempValue floatValue] * 0.420;
从这里开始,您似乎想将该值放回NSNumber*
对象中,您可以这样做:
@([loadTempValue floatValue] * 0.420);
NSNumber *myValue = @([loadTempValue floatValue] * 0.420);
最近,Objective-C引入了@(…)
语法。它被称为数字的对象文字表示法。这是一种书写[NSNumber numberWithFloat:…]的简写方法。
最后,您需要将结果分配给名为myValue
的变量;您可以这样完成:
@([loadTempValue floatValue] * 0.420);
NSNumber *myValue = @([loadTempValue floatValue] * 0.420);
更好的问题是,为什么您认为可以为对象指针指定一个
double
值?@rmaddy请解释一下?谢谢。loadTempValue由NSNumber*loadTempValue=[默认objectForKey:@“tempValue”]设置从你的评论来看,我认为这是错误的?如果是,我应该怎么做?你可以这样做:double-loadTempValue=[defaults-doubleForKey:@“tempValue”];
。假设defaults
是NSUserDefaults
。好的。是的,它是NSUserDefaults。那么这更好(对)这样做的方式?我可以问一下推理吗?简单地说,就好像我更全面地理解推理一样,我将来更有可能把它做对,并且让我记住它!NSNumber有它的位置。使用正确的工具来做正确的工作。如果你在做数学,使用简单的类型(如double
)更容易。如果你需要存储这些值在数组或字典中,将值包装在NSNumber
中。谢谢!如果我理解正确,请在正常情况下使用简单类型,但在存储时只需将它们包装在NSNumber中。再次感谢。什么是loadTempValue
?