问题
I am making a server call in some Objective-c code. If it returns as a @"yes"
, it will do an action. For some reason, the // DO ACTION HERE
part is never reached.
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
}
回答1:
if ([returnStringResults isEqualToString:yesText]) {
testLabel.text = @"Success";
// DO ACTION HERE
}
Edit: As bbum pointed out, NSString *returnStringResults = returnString;
does nothing.
So really, remove that line and use
if ([returnString isEqualToString:yesText]) {
testLabel.text = @"Success";
// DO ACTION HERE
}
回答2:
You're comparing pointer addresses. The way this code works yesText
and returnStringResults
are pointers to different NSString instances, thus the pointers are not equal. You've to use NSString isEqualToString
method to compare.
来源:https://stackoverflow.com/questions/4987770/if-statement-checking-for-nsstring-equality-using