以下声明编译良好:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if ([textField ==_telField]) {
}
但是,以下语句将引发错误:预期标识符
if ([textField ==_telField] || [1==1]) {
}
如果[1==1]
替换为[textField==_mobField]
有人可以解释这里发生了什么,以及是否可以在这里连续多个OR条件链接?
答案 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语句。