2011-02-14 41 views
1

NSString相等我在一些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 
} 

回答

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 
} 
+4

另外`NSString * returnStringResults = returnString;`没有目的。 – bbum 2011-02-14 00:13:45

2

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