如果语句使用==检查NSString的相等性

时间:2011-02-14 00:03:15

标签: objective-c cocoa nsstring string-comparison

我正在使用一些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
}

2 个答案:

答案 0 :(得分:8)

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

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

实际上,删除该行并使用

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

答案 1 :(得分:2)

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