2010-04-21 73 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