如何在NSArray中交换值索引

时间:2013-03-04 11:24:49

标签: iphone nsarray

我有NSArray。我在那个数组里面有一些价值。

NSArray *testArray = [NSArray arrayWithObjects:@"Test 1", @"Test 2", @"Test 3", @"Test 4", @"Test 5", nil];
NSLog(@"%@", testArray);

结果如下:

(
"Test 1",
"Test 2",
"Test 3",
"Test 4",
"Test 5"
)

现在我想要这样的结果:

(
"Test 3",
"Test 5",
"Test 1",
"Test 2",
"Test 4"
)

有没有办法在不重新初始化阵列的情况下执行此操作?我可以交换这个数组的值吗?

2 个答案:

答案 0 :(得分:7)

使用 NSMutableArray 交换两个对象。

- exchangeObjectAtIndex:withObjectAtIndex:

这将在给定索引(idx1和idx2)

中交换数组中的对象

IDX1
要在索引idx2处替换对象的对象的索引。

IDX2
要在索引idx1处替换对象的对象的索引。

<强> SWIFT

func exchangeObjectAtIndex(_ idx1: Int,
         withObjectAtIndex idx2: Int)

<强>目的-C 使用NSMutableArray

  - (void)exchangeObjectAtIndex:(NSUInteger)idx1
                withObjectAtIndex:(NSUInteger)idx2

Swapping elements in an NSMutableArray

答案 1 :(得分:6)

您的数组必须是NSMutableArray的实例,否则不允许使用write方法(NSArray是只读的)

使用以下方法:

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject

您需要一个临时存储来存储替换对象:

id tempObj = [testArray objectAtIndex:index];
[testArray replaceObjectAtIndex:index withObject:[testArray objectAtIndex:otherIndex]];
[testArray replaceObjectAtIndex:otherIndex withObject:tempObj];