简体   繁体   English

带有IF语句问题的NSNumber

[英]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的内置方法: integerValuefloatValue等。

Assuming value is a NSNumber / NSString : 假设valueNSNumber / 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM