Флажок Состояние Проблема - PullRequest
2 голосов
/ 23 декабря 2009

Я новичок в Какао и пробираюсь по книге Хиллегаса. У меня проблемы с заданием 20 главы 2.

Задача состоит в том, чтобы добавить флажки, которые переключаются, если буква рисуется курсивом, жирным шрифтом или и тем, и другим.

-(IBAction)toggleItalic:(id)sender
{
int state = [italicBox state];
NSLog(@"state %d", state);
if (state = 1) {
    italic = YES;
    NSLog(@"italic is yes");
}
else {
    italic = NO;
    NSLog(@"italic is no");

}
}

Прямо сейчас этот фрагмент кода возвращает да, когда флажок установлен, и , когда флажок снят. Что я делаю не так?

Спасибо

Justin.

Ответы [ 2 ]

9 голосов
/ 23 декабря 2009

Ваша проблема заключается в заявлении if:

if (state = 1) {

вы присваиваете состояние значению 1: state = 1, в то время как вам нужно проверить, является ли состояние в данный момент 1: state ==1

Это довольно распространенная ошибка (особенно в языках, которые допускают присваивание в операторах if). Один из приемов, чтобы научиться обходить это, состоит в том, чтобы сделать ваши проверки сравнения следующим образом:

if (1 == state) 

Вы не можете присвоить 1 другому значению. Поэтому, если вы по ошибке используете = вместо ==, вы получите ошибку компилятора, и это легко исправить.

4 голосов
/ 24 декабря 2009

Используйте сравнение вместо присваивания и используйте правильные перечисления вместо жестко закодированных значений, которые могут измениться:

if (state == NSOnState)
else if (state == NSOffState)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...