我正在使用一些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
}
答案 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)
您正在比较指针地址。此代码的工作方式yesText
和returnStringResults
是指向不同NSString实例的指针,因此指针不相等。您必须使用NSString isEqualToString
方法进行比较。