2013-03-04 26 views
8

Tôi có NSArray. Tôi có một số giá trị bên trong mảng đó.Cách hoán đổi chỉ số giá trị trong NSArray

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

Kết quả là như dưới đây:

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

Bây giờ tôi muốn kết quả như thế này:

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

Có cách nào để làm điều đó mà không cần khởi tạo mảng? Tôi có thể trao đổi giá trị của mảng này không?

+2

số NSArray là tĩnh như nó có, do đó bạn sẽ thậm chí không được có thể thêm bất cứ thứ gì vào nó, để lại một mình xáo trộn các mục. Mặc dù 'NSMutableArray' có một hàm 'sortUsingSelector'. Với phương pháp này, bạn có thể xác định thứ tự sắp xếp của riêng bạn. – ATaylor

+0

@ATaylor: có thể trong NSMutableArray không ?? –

+0

@ B.M.W. có thể của nó trong NSMutableArray .. –

Trả lời

6

mảng của bạn phải là một thể hiện của một NSMutableArray khác viết các phương pháp không được phép (NSArray là chỉ đọc)

Sử dụng phương pháp sau đây:

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

bạn sẽ cần một lưu trữ tạm thời để lưu trữ các thay thế đối tượng:

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

Cảm ơn giorashc .... Nó hoạt động như sự quyến rũ. Cảm ơn vì sự giúp đỡ. –

+19

Bạn có thể sử dụng 'exchangeObjectAtIndex: withObjectAtIndex:', sau đó bạn không cần một đối tượng tạm thời. –

+0

@MartinR: sẽ dùng thử ... Cảm ơn bạn đã trợ giúp ... –

7

Sử dụng NSMutableArray để hoán đổi hai các đối tượng.

- exchangeObjectAtIndex:withObjectAtIndex: 

này trao đổi các đối tượng trong mảng tại chỉ số nhất định (idx1 và idx2)

idx1
Chỉ số của đối tượng nào đó để thay thế các đối tượng tại chỉ số idx2.

idx2
Chỉ mục của đối tượng để thay thế đối tượng tại chỉ mục idx1.

SWIFT

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

Objective-C Sử dụng một NSMutableArray

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

Swapping elements in an NSMutableArray

Các vấn đề liên quan