Objective-C:如果语句使用OR

时间:2016-09-07 00:19:58

标签: objective-c if-statement

以下声明编译良好:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    if ([textField ==_telField]) {

}

但是,以下语句将引发错误:预期标识符

if ([textField ==_telField] || [1==1]) {
}

如果[1==1]替换为[textField==_mobField]

,则会引发相同的错误

有人可以解释这里发生了什么,以及是否可以在这里连续多个OR条件链接?

2 个答案:

答案 0 :(得分:2)

您不能只是将方括号放入Objective-C表达式中,无论您感觉如何。方括号在Objective-C中具有非常特定的含义,这些含义并不包含您正在做的任何内容。只需删除它们:

if (textField == _telField || 1 == 1) {

答案 1 :(得分:1)

建立@ matt的答案:

您误将方括号误认为:

if ([textField ==_telField] || [1==1]) { 
}

应该是

if ((textField ==_telField) || (1==1)) { // Parenthesis instead
}

if (textField ==_telField || 1==1) { // Nothing is fine too
}

你可以想到Objective-C中的方括号,类似于使用双括号来调用其他语言中的函数,如下所示:

//Objective-C
[self myFunction]

//Swift
self.myFunction()

此外,正如@rmaddy指出的那样,1==1将始终返回true,因此如果你这样做,你甚至不需要if语句。