如何在Objective-C中反转NSArray?

26 浏览
0 Comments

如何在Objective-C中反转NSArray?

我需要反转我的NSArray

例如:

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

实现这个的最佳方式是什么?

admin 更改状态以发布 2023年5月19日
0
0 Comments

获取一个数组的反向副本,请查看danielpunkass' solution,使用reverseObjectEnumerator

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

@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

0
0 Comments

如果你利用 NSArray 的内置 reverseObjectEnumerator 方法和 NSEnumeratorallObjects 方法,就会有一个更简单的解决方案:

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

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

此数组包含<强调>按枚举顺序排列的剩余对象。

0