【问题标题】:If statement checking for NSString equality using ==If 语句使用 == 检查 NSString 是否相等
【发布时间】:2011-06-26 15:27:15
【问题描述】:

我正在使用一些 Objective-c 代码进行服务器调用。如果它以@"yes" 的形式返回,它将执行一个操作。出于某种原因,永远无法到达// DO ACTION HERE 部分。

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSString *returnStringResults = returnString;
NSString *yesText = @"yes";

if (returnStringResults == yesText) {
    testLabel.text = @"Success";
    // DO ACTION HERE
}

【问题讨论】:

    标签: objective-c cocoa nsstring string-comparison


    【解决方案1】:
    if ([returnStringResults isEqualToString:yesText]) {
        testLabel.text = @"Success";
        // DO ACTION HERE
    }
    

    编辑:正如 bbum 所指出的,NSString *returnStringResults = returnString; 什么都不做。

    真的,删除该行并使用

    if ([returnString isEqualToString:yesText]) {
        testLabel.text = @"Success";
        // DO ACTION HERE
    }
    

    【讨论】:

    • 另外NSString *returnStringResults = returnString;也没有目的。
    • 另外,当你进行方法调用时,你有点需要方括号。 (我添加了它们)
    • 感谢 Dave,我非常专注于“isEqualToString:”部分……抱歉。
    【解决方案2】:

    您正在比较指针地址。这段代码的工作方式yesTextreturnStringResults 是指向不同 NSString 实例的指针,因此指针不相等。您必须使用 NSString isEqualToString 方法进行比较。

    【讨论】:

      猜你喜欢
      • 2015-09-04
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多