【问题标题】:if statement with && and || in objective c带有 && 和 || 的 if 语句在目标 c
【发布时间】:2014-01-30 15:23:23
【问题描述】:

我想知道以下有什么问题,或者如何正确修复括号:

if (([newCharacter isEqual: @"ö"]||[newCharacter isEqual: @"Ö"]) && (self.currentLanguage isEqual @"Finnish/Swedish")){
//do something
}

错误说我应该把括号放在某个地方……但我不知道怎么做。任何人都可以帮忙吗?

【问题讨论】:

  • 语法错误...添加大括号 [self.currentLanguare isEqual:@""];

标签: objective-c if-statement logical-operators


【解决方案1】:

如果你改变这个:

(self.currentLanguage isEqual @"Finnish/Swedish")

到这里:

[self.currentLanguage isEqual:@"Finnish/Swedish"]

你应该没事的。您需要方括号和冒号来获得发送isEqual 消息的正确表达式,并且&& 之后不需要额外的() 括号。

【讨论】:

  • 我不认为使用isEqual: 意味着您只会比较内存地址。对于两个字符串对象的任何比较,isEqual:isEqualToString: 都应该具有相同的结果。 @viperking 的回答链接到对此的一个很好的讨论。简而言之,我想说的是,对于大多数代码来说,除了样式偏好之外,它确实没有任何意义。
【解决方案2】:

你在isEqual之后缺少:self.currentLanguage isEqual @"Finnish/Swedish"

所以你的代码应该是这样的:

if (([newCharacter isEqual: @"ö"]||[newCharacter isEqual: @"Ö"]) && (self.currentLanguage isEqual: @"Finnish/Swedish")){
   //do something
}

我还建议您将isEqual: 更改为isEqualToString:,因为根据this question,您比较的是什么更明显,并且还存在一些性能问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    相关资源
    最近更新 更多