8

我有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"
)

有没有办法在不重新初始化数组的情况下做到这一点?我可以交换这个数组的值吗?

4

2 回答 2

8

使用NSMutableArray交换两个对象。

- exchangeObjectAtIndex:withObjectAtIndex:

这会在给定索引处交换数组中的对象(idx1 和 idx2)

idx1
对象的索引,用于替换索引 idx2 处的对象。

idx2
对象的索引,用于替换索引 idx1 处的对象。

迅速

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

OBJECTIVE-C 使用 NSMutableArray

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

交换 NSMutableArray 中的元素

于 2015-05-08T11:13:47.840 回答
7

您的数组必须是一个实例,NSMutableArray否则不允许写入方法(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];
于 2013-03-04T11:28:14.000 回答