2014-01-11 1 views
0

Я задаюсь вопросом, что случилось со следующим, или как правильно зафиксировать кронштейны:если оператор с && и || в объективном с

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

ошибка говорит, что я должен поместить круглые скобки где-то ... но я не могу понять, каким образом. Может ли кто-нибудь помочь?

+5

ошибка синтаксиса. .. добавить фигурные скобки [self.currentLanguare isEqual: @ ""]; –

ответ

2

Если изменить это:

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

к этому:

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

вы должны быть в порядке. Вам нужны квадратные скобки и двоеточие, чтобы иметь правильное выражение для отправки сообщения isEqual, и никакие дополнительные() круглые скобки не нужны после &&.

+0

Я не думаю, что это правда, что использование 'isEqual:' означает, что вы будете сравнивать только адреса памяти. И 'isEqual:' и 'isEqualToString:' должны иметь одинаковые результаты для любого сравнения двух строковых объектов. @ Ответы viperking на хорошее обсуждение этого. Короче говоря, я бы сказал, что для большинства кода это действительно не имеет значимого различия, кроме предпочтений стиля. –

+0

Вы правы. Моя вина.. –

1

У вас не хватает : после isEqual в этом: self.currentLanguage isEqual @"Finnish/Swedish"

Так что ваш код должен выглядеть так:

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

Я также рекомендовал бы вам изменение isEqual: к isEqualToString:, поскольку это более очевидно, что вы сравниваете, а также имеет некоторые проблемы с производительностью в соответствии с this question

Смежные вопросы