-1

当我检查 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;
     }

但是这里的条件也失败了,这是什么问题?

4

3 回答 3

4

在第一个代码中,您将根据 int 检查 NSNumber 对象。正确的检查是:

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

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

if([number isEqualToString:@"0"]) {
    imgButton.hidden = YES;
}
于 2013-05-21T11:43:53.497 回答
1

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

于 2013-05-21T11:42:46.497 回答
0

在字符串比较上,你应该使用方法

isEqualToString:NSString *)string

为了比较。

对于 NSNumbers 它

isEqualToNumber:(NSNumber *)number

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

于 2013-05-21T11:43:09.247 回答