虽然iOS中的比较值似乎是正确的,但条件总是失败

时间:2013-05-21 11:40:15

标签: iphone ios xcode

当我在nslog中检查数字的值时,它会显示' 0'

    NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
    NSNumber *number=[data objectForKey:@"serial"];
    NSLog(@"%@",number);
    if(number ==0 )
    {
         imgButton.hidden=YES;
    }

但条件总是失败,我也改变了这样的代码

     NSString *number=[data objectForKey:@"serial"]
     NSLog(@"%@",number);
     if(number == @"0" )
     {
           imgButton.hidden=YES;
     }

但是这里的情况也失败了,这有什么问题?

3 个答案:

答案 0 :(得分:4)

在第一个代码中,您正在针对int检查NSNumber,object。 正确的检查是:

if([number intValue] == 0) {
    imgButton.hidden = YES;
}

在第二个代码中,您正在检查两个NSString,但您必须使用“isEqualToString”方法而不是“==”。正确的代码是:

if([number isEqualToString:@"0"]) {
    imgButton.hidden = YES;
}

答案 1 :(得分:1)

NSNumber是一个对象,0是整数(基本类型)。他们永远不会平等。但是您可以像[number intValue] == 0这样更改比较,当NSNumber的值为0时,这将有效。

答案 2 :(得分:0)

在字符串比较中,您应该使用方法

isEqualToString:NSString *)string

进行比较。

对于NSNumbers,

isEqualToNumber:(NSNumber *)number

因为否则你不会比较它们是否具有相同的值,但它们是否存储在相同的存储空间中。