Search code examples
objective-cnsarray

Is there an easy way to iterate over an NSArray backwards?


I've got an NSArray and have to iterate over it in a special case backwards, so that I first look at the last element. It's for performance reasons: If the last one just makes no sense, all previous ones can be ignored. So I'd like to break the loop. But that won't work if I iterate forward from 0 to n. I need to go from n to 0. Maybe there is a method or function I don't know about, so I wouldn't have to re-invent the wheel here.


Solution

  • To add on the other answers, you can use -[NSArray reverseObjectEnumerator] in combination with the fast enumeration feature in Objective-C 2.0 (available in Leopard, iPhone):

    for (id someObject in [myArray reverseObjectEnumerator])
    {
        // print some info
        NSLog([someObject description]);
    }
    

    Source with some more info: http://cocoawithlove.com/2008/05/fast-enumeration-clarifications.html