Как узнать, нахожусь ли я на последней итерации цикла for X in Y в Objective-C - PullRequest
6 голосов
/ 14 февраля 2009

У меня есть цикл, использующий синтаксис for (NSObject * obj в someArray) {}. Есть ли простой способ узнать, нахожусь ли я на последней итерации цикла (т.е. без необходимости использовать [someArray count])

Ответы [ 3 ]

16 голосов
/ 14 февраля 2009

Может это сработает?

if ( obj == [ someArray lastObject ] ) {
    // ...
}
15 голосов
/ 14 февраля 2009

Вы можете использовать NSArray#lastObject, чтобы определить, равно ли obj [NSArray lastObject].

for (NSObject *obj in someArray) {
    if ([someArray lastObject] == obj) {
        NSLog(@"Last iteration");
    }
}
5 голосов
/ 14 февраля 2009

Вместо вызова в массив на каждой итерации может лучше кэшировать последний объект в массиве:

NSObject *lastObject = [someArray lastObject];
for (NSObject *obj in someArray) {

    // Loop code

    if (obj == lastObject) {
        // do what you want for the last array item
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...