Прерывание цикла for во время перечисления (Цель C) - PullRequest
2 голосов
/ 17 октября 2010

Я перечисляю словарь и проверяю на известную дату. Если точная дата (и дата, и время) совпадает с моей известной датой, я хочу, чтобы цикл 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. Документация гласит, что isEqualToDate проверяет разницу в доли секунды, но, похоже, она ловит все, что происходит в тот же день, не включая время.

1 Ответ

3 голосов
/ 17 октября 2010

Нет такой вещи, как выход из if, разрыв внутри if, который должен вывести вас из for.В любом случае, вы всегда можете попробовать что-то вроде [self.knownDate isEqualToDate:objectDate && break, но проблема не в этом.Чтобы убедиться, поместите туда несколько строк отладки, даже простую команду, чтобы напечатать «эй, я здесь» в блоке if.

...