2012-06-20 4 views
0

У меня возникли проблемы с if заявлениеПроблема с тем, если оператор

Я объект под названием enemy2, и я не хочу, чтобы объект для работы, так что я использовал setHidden = YES и я собирался использовать код

if(enemy2 setHidden: YES) 
{ 

} 
if(enemy2 setHidden: NO) 
{ 

} 

Но его говорит его за исключением ')' после setHidden

+1

Что вы пытаетесь достичь? Может быть, вам нужно проверить, является ли представление «скрытым», а затем установить новое значение «скрытое» для свойства? –

+0

Я согласен с Flex. Я не уверен, как у вас настроен ваш код, но я не предвижу, как это получается ... – FreeAsInBeer

+0

@NSAutoReleasePool - ваше редактирование полностью аннулирует вопрос. Если вы хотите исправить код в вопросе, добавьте ответ. – jrturton

ответ

1
if([enemy2 setHidden: YES]) 
{ 

} 
if([enemy2 setHidden: NO]) 
{ 

} 
+0

и какой код будет выполнен в этом случае? в чем смысл утверждений if? – jrturton

+0

Этот ответ не имеет смысла; Предполагая, что 'setHidden:' является стандартным методом setter, он возвращает (void) и, таким образом, не может использоваться в выражении 'if'. – bbum

1

Это должно быть if([enemy2 setHidden: YES]) { } т.е. inclue квадратных скобках

1

В Objective-C, вы должны вызвать метод как этот [anObject method]

Итак, ([enemy2 setHidden: YES]) вместо (enemy2 setHidden: NO)

4

Даже если вы исправить синтаксис, ни одно из этих утверждений, вероятно, выполнить. Я думаю, вы хотите

if ([enemy2 hidden]) 
{ 
} 
else 
{ 
} 

Использование геттера, а не сеттера.

+0

+ 1, с компилятором LLVM предыдущие решения не работают ... –

+2

Вероятно, должно быть 'isHidden'.«BOOL» getters обычно начинаются с «is», «has» и т. Д. –

+0

@JonathanGrynspan Хорошо поймать! Я исправил свой ответ ... –

1

Как предлагается jrturton (также см. Мой комментарий), вам нужно протестировать значение bool.

Если я проверить код (с LLVM Compiler)

if([enemy setHidden:YES]){ 

} 

я получаю ошибку во время компиляции, так как [self setHidden:YES] возвращает void.

Положение требует выражения скалярного типа («пустота» недействителен)

Правильный подход может быть следующим, но это зависит от того, что вы хотите достичь.

if([enemy hidden]) { 


} 
else { 


} 

Редактировать

на основе доклада Джонатан Гринспэн, если enemy подкласс UIView вы должны использовать isHidden вместо hidden, так как геттер в UIView классе определяется как:

@property(nonatomic, getter=isHidden) BOOL hidden 
+1

Хороший момент, я запутался в сеттерах и присваивании (=) – jrturton

+1

isHidden прав, предполагая, что enemy2 является подклассом UIView. В противном случае мы не знаем, что это такое. – jrturton

+0

Да, вы правы ... Я мог бы добавить его как редактирование. Благодарю. –

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