Для цикла и оператора if - PullRequest
       3

Для цикла и оператора if

0 голосов
/ 09 апреля 2011

Я работаю со следующим циклом for:

for (int intPrjName = 0; intPrjName < [arrPrjName count]; intPrjName++)

У меня есть оператор if / else в цикле for, в котором блок else показывает предупреждающее сообщение.Предположим, что количество массивов равно 10;затем при сбое if блок else будет выполнен десять раз, а аварийное сообщение отобразится десять раз.Как я могу деактивировать это?

Ответы [ 3 ]

2 голосов
/ 09 апреля 2011

Ваша проблема - общая проблема программирования. Самый простой способ - просто использовать флаг BOOL.

BOOL alertShown = NO;
for (int intPrjName = 0; intPrjName < [arrPrjName count]; intPrjName++) {
    if (something) {
        // . . .
    } else {
        if (!alertShown) {
            [self showAlert:intPrjName]; // Or something
            alertShown = YES;
        }
    }
}
1 голос
/ 09 апреля 2011

Если вы хотите показать только одно предупреждение в случае сбоя условия, это, вероятно, означает, что вы не хотите продолжать цикл. Так, как упоминал Джейсон Коко в своем комментарии, вы break из цикла. Вот простой пример того, как это сделать:

for (int intPrjName = 0; intPrjName < [arrPrjName count]; intPrjName++) {
   if (condition) {
      // do something
   } else {
      break;
   }
}

В противном случае, если вы хотите проверить некоторые условия для каждого элемента массива, вы, вероятно, захотите отследить сбои и показать пользователю сводку (это может быть предупреждение, другое представление и т. Д.). Краткий пример:

NSUInteger numFailures = 0;

for (int intPrjName = 0; intPrjName < [arrPrjName count]; intPrjName++) {
   if (condition) {
      // do something
   } else {
      numFailures++;
   }
}

UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:title
                  message:@"Operation failed: %d", numFailures
                  delegate:nil
                  cancelButtonTitle:@"OK"
                  otherButtonTitles:nil] autorelease];
[alert show];

Удачи!

0 голосов
/ 09 апреля 2011

Предположим, что C является массивом, где n является типом типа int или NSNumber, приводящим к типу int

для (n в C) {

если {n равно 10)

DoStuff }

еще { doOtherStuff } }

}

Хорошо, что в этом подходе вы можете использовать размер массива.

Посмотрите документы для перечисления стекла

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