代码之家  ›  专栏  ›  技术社区  ›  Daddy

在枚举期间中断for循环(目标C)

  •  2
  • Daddy  · 技术社区  · 14 年前

    我正在列举一本词典并查找已知的日期。如果确切的日期(日期和时间)与我已知的日期匹配,我希望for循环停止枚举。我遇到的问题是,在检查过程中,我将中断if语句而不是for循环。

    //known date has already been applied to self.knownDate
    for (id object in array) {
        NSDate *objectDate = object.date;
        if ([self.knownDate isEqualToDate:objectDate]) {
            break;
        }
        NSLog(@"date didn't match, move on to next entry");
    }
    

    问题是,for循环一直在运行,因为只有if语句被中断。

    如何重构这个以便for循环退出?

    顺便说一下,我需要检查nsdate对象的日期和时间。文件说IsEquatoDate检查了次秒的差异,但它似乎捕捉到了同一天内的任何东西,不包括时间。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Oblomov    14 年前

    没有什么事情能像打破一个如果,打破内部的如果应该让你离开为。不管怎样,你总是可以尝试 [self.knownDate isEqualToDate:objectDate && break 相反,但这不是你的问题。要确保这一点,可以在其中放置一些调试行,甚至只需在if块中打印一个简单的命令“嘿,我在这里”。