小编典典

如何在 Objective-C 中反转 NSArray?

all

我需要扭转我的NSArray.

举个例子:

[1,2,3,4,5]必须变成:[5,4,3,2,1]

实现这一目标的最佳方法是什么?


阅读 115

收藏
2022-03-30

共1个答案

小编典典

要获得数组的反向副本,请查看使用的解决方案reverseObjectEnumerator

如果您利用 on 的内置reverseObjectEnumerator方法NSArray和 的allObjects方法,则有一个更简单的解决方案NSEnumerator

NSArray* reversedArray = [[startArray reverseObjectEnumerator] allObjects];

allObjects被记录为返回一个数组,其中包含尚未遍历的对象nextObject,按顺序:

该数组按枚举顺序包含枚举器的所有剩余对象。

要反转可变数组,您可以在代码中添加以下类别:

@implementation NSMutableArray (Reverse)

- (void)reverse {
    if ([self count] <= 1)
        return;
    NSUInteger i = 0;
    NSUInteger j = [self count] - 1;
    while (i < j) {
        [self exchangeObjectAtIndex:i
                  withObjectAtIndex:j];

        i++;
        j--;
    }
}

@end
2022-03-30