if 语句使用 == 检查 NSString 相等性

发布于 2024-10-17 09:00:49 字数 518 浏览 4 评论 0原文

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

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
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眉黛浅 2024-10-24 09:00:49
if ([returnStringResults isEqualToString:yesText]) {
    testLabel.text = @"Success";
    // DO ACTION HERE
}

编辑:正如 bbum 指出的那样, NSString *returnStringResults = returnString; 不执行任何操作。

所以真的,删除该行并使用

if ([returnString isEqualToString:yesText]) {
    testLabel.text = @"Success";
    // DO ACTION HERE
}
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
}
北凤男飞 2024-10-24 09:00:49

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文