2010-04-21 134 views
0

我正在嘗試重新排列一個數組(將一個90的項移動到頂部,並將所有其他項向下移動)。數組重新排序

有沒有辦法做到這一點?

回答

7
NSMutableArray* array; 
... 
id ninety = [array objectAtIndex:90]; 
[ninety retain]; // needs retain because -removeObject will release that object. 
[array removeObjectAtIndex:90]; 
[array insertObject:ninety atIndex:0]; 
[ninety release]; 
1

您需要使用NSMutableArray。用removeObjectAtIndex:刪除要移動的對象,然後用insertObject:atIndex:將其粘貼回新位置。

4

如果是NSMutableArray,您可以使用-exchangeObjectAtIndex:withObjectAtIndex:來切換項目0,並將想要移動的項目移動到頂端。無需與retainrelease混淆。

(編輯 - 這是提問者想不正是 - 由KennyTM的效應初探是正確的該案例)

+0

是否將項目移動到底部? – Emil 2010-04-21 18:58:09

+0

我沒有仔細閱讀你的問題 - 我以爲你只是想交換。在這種情況下,KennyTM的回答是正確的。 – Jim 2010-04-21 19:30:48

-1

1)牢記項目90
2)移動項目0..89一個插槽向下(可以使用func memmove())
3)將原'90'項放入插槽0中

+0

我很確定使用memmove()和NSArray會導致災難。這不像我們在這裏談論C數組。 – 2010-04-21 20:04:46

+0

同意,這是一個可怕的想法。 – shosti 2010-04-21 20:15:03