【问题标题】:Why Does String Not Equal What Is Stored?为什么字符串不等于存储的内容?
【发布时间】:2012-07-05 16:41:11
【问题描述】:

这是一个简单而奇怪的问题...

if(tableViewNum == @"One") {
        if ([drinkArray objectAtIndex:0] == currentDate) {
            [updatedArray addObject:drinkArray];
            NSLog(@"MADE THE ELSE1");
        }
        NSLog(@"MADE THE ELSE2");
    }
    else if (tableViewNum == @"Two") {
        if ([[drinkArray objectAtIndex:0] isEqualToString:yesterdayDate])
            [updatedArray addObject:drinkArray];
    } else {
        NSLog(@"MADE THE ELSE %@",tableViewNum);
        [updatedArray addObject:drinkArray];
    }

在第一个 if 语句中,我询问 tableViewNum == @"One"

但即使 tableViewNum 实际上等于 @"One",我也不会进入 if 语句的那部分

正如你所看到的,最后一个 NSLog 以各种方式出现

MADE THE ELSE One

但如果 tableViewNum 真的等于 One,它会通过 if 语句而不是 else 语句代码...?????

【问题讨论】:

    标签: iphone objective-c ios ios5


    【解决方案1】:

    您不能使用== 运算符比较字符串。请改用isEqualToString

    if([tableViewNum isEqualToString:@"One"]) {
        // etc.
    

    ... 其余条件相同。你已经在第二个街区做对了。

    【讨论】:

    • 谢谢!学习 PHP 后我还是习惯了 Objective C :)
    【解决方案2】:

    更具体地说,您不应该使用 == 来比较任何对象。这仅比较指针。使用 [obj isEqual: otherObj] 或 NSStrings isEqualToString: 如上所述。

    【讨论】:

    • 感谢马里奥的深入回答!
    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2018-03-29
    • 2012-02-15
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多