带有IF语句问题的NSNumber

时间:2013-11-26 11:44:59

标签: ios objective-c nsnumber

我正在从服务器加载数据,但我有一个问题,即我返回的值为零(0)而我无法进入内部。请问哪里会有问题?

-(void)method1
{
     NSNumber *value = [data objectForKey:@"samount"];
     NSLog(@"number is -%@-", value); //number is -0-
     if (value == 0)
     {
          NSLog(@" OK :) ");
     }
     else 
     {
          NSLog(@"  Bad :( ");
     }
}

2 个答案:

答案 0 :(得分:7)

使用isEqual:

if ([value isEqual:@(0)])

如果valuenil(其中==floatValue或类似方法的比较失败,那么也会正确评估)

答案 1 :(得分:3)

value是一个对象,更确切地说是一个NSString对象(根据你在Alladinian的回答中的评论),但是你正在检查它的地址。您可以使用NSNumber将字符串转换为NSNumberFormatter,然后检查其值或依赖NSString的内置方法:integerValuefloatValue等。

假设valueNSNumber / NSString

if ([value integerValue] == 0)

请参阅NSString文档中的Getting Numeric ValuesNSNumber文档中的Accessing Numeric Values,然后选择最适合您数据类型的方法。