我有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"
)
有没有办法在不重新初始化阵列的情况下执行此操作?我可以交换这个数组的值吗?
答案 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
答案 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];