TableView:可能是一个简单的错误

时间:2012-03-14 22:39:18

标签: objective-c ios

我正在使用表视图,我想知道为什么我的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)
.....

感谢您的帮助!

3 个答案:

答案 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