当我将值分配给银行:banca.name = @"CheBanca!";
时,以下条件返回true。
if(banca.name==@"CheBanca!"){
header.bankNameLabel.textColor=[UIColor greenColor];
}
但是,当我将相同的值指定为:banca.name = [jsonBanca objectForKey:@"nome_banca"];
时,条件会返回false,尽管NSLog(@"Bank name: %@", [jsonBanca objectForKey:@"nome_banca"]);
会输出值Bank name: CheBanca!
以下代码显示了我如何获得jsonBanca:
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];
NSDictionary *results = [responseString JSONValue];
[responseString release];
NSArray *jsonBanche = [results objectForKey:@"banche"];
NSLog(@"%@",jsonBanche);
NSMutableArray *banks = [NSMutableArray arrayWithCapacity:jsonBanche.count];
for (int i=0; i<jsonBanche.count; ++i) {
NSDictionary *jsonBanca = [jsonBanche objectAtIndex:i];
}
此代码NSLog(@"%@",jsonBanche);
返回银行:
{
"nome_banca" = "CheBanca!";
"nome_prodotto" = "Conto Deposito";
rating = "A-1";
}, ...
问题是为什么这两个字符串@“CheBanca!”并且JSON收到的字符串不相等,尽管它们包含相同的短语。如何使它们等于在条件下返回真实。
答案 0 :(得分:3)
要准确比较字符串,您应该使用isEqualToString
方法。
if ([banca.name isEqualToString:@"CheBanca!"]) {
// strings match
header.bankNameLabel.textColor=[UIColor greenColor];
}
答案 1 :(得分:2)
要检查两个字符串之间是否相等,请使用isEqualToString:
if ([banca.name isEqualToString:@"CheBanca!"]){
header.bankNameLabel.textColor = [UIColor greenColor];
}
您之前的代码(if (banca.name == @"CheBanca!") {
)仅检查指针地址是否相等。
详细了解NSString
班级here。
答案 2 :(得分:1)
这里的问题是NSString*
是指向NSString
的指针,因为它们是通过不同的方式加载的,它们是两个不同的NSString
并且有两个不同的地址。 ==比较地址,因此将它们视为不同。
要比较字符串的值,请使用compare:以及NSString
或isEqualToString:方法的相关方法