我正在使用表视图,我想知道为什么我的if语句是错误的。 可能是一个非常简单的错误。我已调试,我看到'message'包含tableview单元格的值。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *message = [NSString stringWithFormat:@"%@",[tableViewArray objectAtIndex:indexPath.row]];
NSString *apple = [NSString stringWithFormat:@"Apple"];
if(apple == message)
.....
感谢您的帮助!
答案 0 :(得分:0)
您正在比较对象。您将需要使用以下代码:
if ([apple isEqualToString:message]) {
// ...
}
答案 1 :(得分:0)
嗯,是的,很简单,你要比较两个不同变量的地址,它们肯定不是相同的数字:)对于你使用的内容比较
- (BOOL)isEqualToString:(NSString *)aString
请仔细阅读NSString reference,你也可能想找一些关于c语言基础的文献。
答案 2 :(得分:0)
在您的情况下,message
是内存中NSString
对象的指针地址。执行==
时,您要比较指针的地址而不是字符串的内容。要比较实际NSString
对象的内容,您需要使用适当的方法isEqualToString:
。
在下面的示例中,我创建了两个字符串,并显示它们具有相同的内容但指针地址不同。 %p
中的NSLog()
打印指针地址
NSString *string1 = [NSString stringWithFormat:@"test"];
NSString *string2 = [NSString stringWithFormat:@"test"];
NSLog(@"(%p == %p) => %d", string1, string2, string1 == string2);
NSLog(@"[string1 isEqualToString:string2] => %d", [string1 isEqualToString:string2]);
=> 2012-03-14 22:55:07.395 Untitled[2797:707] (0x1099146c0 == 0x109914870) => 0
=> 2012-03-14 22:55:07.398 Untitled[2797:707] [string1 isEqualToString:string2] => 1