[英]NSNumber with IF statement issue
I am loading data from a server but I have an issue that the value that I am returning is zero(0) while I can't go inside if. 我正在从服务器加载数据,但我有一个问题,我返回的值是零(0),而我不能进去,如果。 Please where would be the problem? 请问哪里会有问题?
-(void)method1
{
NSNumber *value = [data objectForKey:@"samount"];
NSLog(@"number is -%@-", value); //number is -0-
if (value == 0)
{
NSLog(@" OK :) ");
}
else
{
NSLog(@" Bad :( ");
}
}
Use isEqual:
使用isEqual:
if ([value isEqual:@(0)])
That will also evaluate correctly in case value
is nil
(where ==
comparison with floatValue
or similar methods would fail) 如果value
nil
(其中==
与floatValue
或类似方法的比较将失败),这也将正确评估
value
is an object, and more precisely a NSString
object (as per your comments in Alladinian's answer), but you are checking its address. value
是一个对象,更确切地说是一个NSString
对象(根据你在Alladinian的回答中的评论),但你正在检查它的地址。 You can convert your string to NSNumber
with NSNumberFormatter
and then check its value or rely on NSString's built-in methods: integerValue
, floatValue
, etc. 您可以使用NSNumberFormatter
将字符串转换为NSNumber
,然后检查其值或依赖于NSString的内置方法: integerValue
, floatValue
等。
Assuming value
is a NSNumber
/ NSString
: 假设value
是NSNumber
/ NSString
:
if ([value integerValue] == 0)
See Getting Numeric Values in NSString
documentation and Accessing Numeric Values in the NSNumber
documentation and pick the method that best suits your data type. 请参阅NSString
文档中的获取数值和NSNumber
文档中的访问数值 ,并选择最适合您的数据类型的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.