【问题标题】:For loop and if statementFor 循环和 if 语句
【发布时间】:2011-04-09 13:55:33
【问题描述】:

我正在使用以下 for 循环:

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

我在 for 循环下有一个 if/else 语句,其中 else 块显示一条警告消息。假设数组计数为 10;那么当if 失败时,else 块将执行十次,并且警报消息显示十次。我怎样才能停用它?

【问题讨论】:

  • 将显示警报的代码移出循环。
  • 从 else 语句内部中断

标签: iphone objective-c for-loop


【解决方案1】:

您的问题是一般的编程问题。最简单的方法是只使用一个 BOOL 标志。

BOOL alertShown = NO;
for (int intPrjName = 0; intPrjName < [arrPrjName count]; intPrjName++) {
    if (something) {
        // . . .
    } else {
        if (!alertShown) {
            [self showAlert:intPrjName]; // Or something
            alertShown = YES;
        }
    }
}

【讨论】:

  • `showAlert 方法包含的内容。请详细说明(我没有得到该方法中使用参数 intPrjName 的位置)
  • 对不起,showAlert: 只是一个例子。查看 Ziggy 对如何制作 UIAlertView 的回答。
【解决方案2】:

如果您只想在失败的情况下显示一个警报,这可能意味着您不想继续循环。正如 Jason Coco 在他的评论中提到的那样,你 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];

祝你好运!

【讨论】:

    【解决方案3】:

    假设 C 是一个数组,其中 n 是 int 或 NSNumber 类型的 int 类型

    for(n in C){

    如果{n 等于 10)

    材料 }

    否则{ 做其他事情 } }

    }

    这种方法的好处是您可以限制数组的大小。

    查看 Enumeration Glass 的文档

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多