2010-04-21 2 views
0

Я пытаюсь изменить порядок массива (перемещая один элемент от 90 до вершины и перемещаю все остальные).Array reordering

Есть ли способ сделать это?

ответ

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 и тот, который вы хотите переместить в начало. Не нужно возиться с retain и release.

(под редакцией - это не совсем то, что спрашивающий хотел - réponse по KennyTM является правильным для этого случая)

+0

Продвинуть элемент 0 в нижнее положение? – Emil

+0

Я не читал ваш вопрос достаточно внимательно - я думал, вы просто хотели обменять. Ответ KennyTM в этом случае правильный. – Jim

-1

1) иметь в виду пункт 90
2) элементы перемещаются 0..89 один слот вниз (можно использовать func memmove())
3) положить прежний элемент «90» в слот 0

+0

Я уверен, что использование memmove() с NSArray приведет к катастрофе. Это не похоже на то, что мы говорим о массивах C здесь. –

+0

Согласна, это ужасная идея. – shosti