iPhone:Я пытаюсь использовать оператор if, но у меня это не работает

StackOverflow https://stackoverflow.com/questions/1114924

Вопрос

(Почти решено, но не совсем) (Мое временное решение состоит в том, чтобы использовать метод void и вызывать его в каждой кнопке, и таким образом я могу редактировать код, используемый несколькими кнопками, вместо того, чтобы при внесении улучшений редактировать каждую отдельную инструкцию buttons if)

Держу пари, это действительно простая ошибка, которую я допустил, но я не могу ее найти.

Я пытаюсь показать ранее определенное оповещение, когда целое число достигает 50;это оператор if, который я использую в методе viewDidLoad:

if(count == 50){
    [alert show];
}

Когда целое число достигает 50, ничего не происходит.Где я ошибся?

Целое число изменяется следующим образом в IBAction:

 count+=10;

Если я удалю оператор if и просто оставлю показывать оповещение, оно отобразится при загрузке представления.Так что проблема не в предупреждении.

Кто-то указал, что если этот код запускается только один раз в методе viewDidLoad и целое число изменяется на 50 на более позднем этапе, он не будет ждать, пока целое число будет равно 50, вместо этого увидит значение, отличное от 50, и никогда не выполнит предупреждение.

Итак, как бы мне просмотреть целое число с помощью кода и выполнить оповещение когда целое число равно 50, Но не вызывать оповещение в действии, которое увеличивает целое число?

О, и, кстати, я попытался вызвать оператор if в действии, которое увеличивает целое число, и это сработало, но у меня есть около 100 кнопок, которые увеличивают количество целых чисел, и проверка того, равно ли значение 50 в каждой отдельной кнопке, кажется немного отнимающей место и время для всего этого копирования и вставки.Также я планирую, что при достижении целого числа 50 произойдет нечто большее, чем просто оповещение.Я уверен, что есть более эффективный способ просто проверить, равно ли значение целого числа 50.

Это было полезно?

Решение

Попробуйте добавить

if(count == 50){
    [alert show];}

В том же IBAction сразу после того, как вы добавите 10 для подсчета.

Другие советы

Когда ты говоришь

Но когда целое число достигает 50, ничего не происходит

Это наводит меня на мысль, что вы меняете целочисленное значение после запускается метод -viewDidLoad.Ваш оператор if вычисляется только один раз, при загрузке представления, поэтому, если вы меняете значение целого числа после этого момента, вам нужно будет добавить представление оповещения ко всему, что изменяет целое число.

Это должно быть прекрасно - Objective-C - это тонкий слой поверх C, поэтому корректный синтаксис C должен работать.Что это за переменная count?Вы хотите определить его как int, а не NSNumber.NSNumber - это класс, который обертывает число, чтобы его можно было использовать как объект Objective-C, но вы не можете сравнить их, используя синтаксис ==.

Надеюсь, это поможет!

Проверьте соблюдение ключевого значения

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

Попробуй

NSLog(@"count is %d",count); 

и посмотрите, есть ли проблема в этом.Трудно сказать, перепутан count или alert, но проблема не в самом вашем операторе if .

пара вещей, которые нужно попробовать,

  • установите точку останова в операторе if
  • измените оператор if на count >= 50
  • является ли count действительно int или это float?

Самый простой ответ:Имейте все то, что увеличивает count для этого выполните один из методов в вашем контроллере и попросите этот метод проверить, пришло ли время показывать оповещение.

Более сложный ответ, который включает в себя наблюдение за значением: Наблюдение за ключевыми значениями.Вы могли бы настроить наблюдателя, который будет отслеживать значение и выдавать предупреждение, когда оно достигнет 50.Но это потребует больше кода и будет более сложным и подверженным ошибкам, чем просто введение центрального метода для обработки поведения.

Я не понимаю, почему вы не можете показать оповещение в коде, который увеличивает счетчик?Для этого просто нужна ссылка на UIAlertView ...Или опубликуйте уведомление, которое прослушивает код удержания оповещения.

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

Если вы хотите, чтобы он проверял количество при каждом нажатии кнопки и увеличивал количество, то сделайте это в IBAction .

Вы могли бы создать метод, который проверяет счетчик следующим образом

-(BOOL) checkCounter
{
  return count == 50;
}

И вызовите это в своих кнопках вот так после того, как вы увеличите его:

if ([self checkCounter])
{
//do stuff when it's 50
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top