当我在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;
}
但是这里的情况也失败了,这有什么问题?
答案 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
因为否则你不会比较它们是否具有相同的值,但它们是否存储在相同的存储空间中。