如何在Objective-C中反转NSArray?
如何在Objective-C中反转NSArray?
我需要反转我的NSArray
。
例如:
[1,2,3,4,5]
必须变成:[5,4,3,2,1]
实现这个的最佳方式是什么?
admin 更改状态以发布 2023年5月19日
获取一个数组的反向副本,请查看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
如果你利用 NSArray
的内置 reverseObjectEnumerator
方法和 NSEnumerator
的 allObjects
方法,就会有一个更简单的解决方案:
NSArray* reversedArray = [[startArray reverseObjectEnumerator] allObjects];
allObjects
被记录为返回一个数组,其中包含尚未使用 nextObject
遍历的对象,以顺序排列:
此数组包含<强调>按枚举顺序强调>排列的剩余对象。