Цель C: int внезапно меняется на 1-е условие if, когда оно прибывает в оператор If / Then - PullRequest
0 голосов
/ 27 мая 2011

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

Это лист действий, в который я добавил UIDatePicker

в моем .h файле

NSInteger tagOfDateToUse;

в моем файле .m я проверяю его чистоту на ViewDidLoad

tagOfDateToUse = 0;

Мне нужна эта переменная, потому что на экране есть несколько текстовых полей, которые могут вызывать этот лист действий. Поэтому я установил это значение int так, что если его значение равно 100, оно перейдет в одно текстовое поле, если его значение равно 101, оно перейдет к другому

.

Я установил tagOfDateToUse в IBAction. Тогда в

(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {

... Делай некоторые вещи

Он отлично работает с 1-й (100), но когда я нажимаю вторую кнопку, это 101 к этому моменту.

Как только он достигает if, tagOfDateToUse равен _ _, он думает, что это 100, когда до этого момента было 101 ... что в операторе if заставляет его вернуться к 100. .. Чего мне здесь не хватает ...

if (tagOfDateToUse = 100) {vacation_starton.text = [[NSString alloc] initWithFormat:@"%@", [formatter stringFromDate:selectedDate]];
    }
    else if  (tagOfDateToUse = 101)
    {
     vacation_endon.text = [[NSString alloc] initWithFormat:@"%@", [formatter stringFromDate:selectedDate]];

    }

Спасибо!

Ответы [ 4 ]

2 голосов
/ 27 мая 2011

Вы присваиваете tagOfDateToUse значение 100, которое является совершенно допустимым, и затем значение оценивается как логическое условие, в котором все, кроме 0, является истинным, а только 0 - ложным.

Попробуйте изменить это на это ...

if (tagOfDateToUse == 100)
1 голос
/ 27 мая 2011

Вы присваиваете 100 tagOfDateToUse в операторе if. Вам нужно сделать сравнение вместо этого. Это простая опечатка.

if (tagOfDateToUse = 100)

должно быть

if (tagOfDateToUse == 100)

Убедитесь, что у вас включена опция предупреждения "Пропавшие скобки и скобки". Это действительно помогает отследить эти типы проблем.

1 голос
/ 27 мая 2011

То, что вам не хватает, может быть заданием, которое у вас есть в этом условии.Вы хотели написать if (tagOfDateToUse == 100) и else if (tagOfDateToUse == 101)?

0 голосов
/ 27 мая 2011
if (tagOfDateToUse = 100)

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

if (100 == tagOfDateToUse)

Теперь, если вы пропустите один =, компилятор возражает.

...