Я пытаюсь изменить порядок массива (перемещая один элемент от 90 до вершины и перемещаю все остальные).Array reordering
Есть ли способ сделать это?
Я пытаюсь изменить порядок массива (перемещая один элемент от 90 до вершины и перемещаю все остальные).Array reordering
Есть ли способ сделать это?
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];
Вам необходимо использовать NSMutableArray. Удалите объект, который хотите переместить, с помощью removeObjectAtIndex:
, а затем верните его обратно в новом месте с помощью insertObject:atIndex:
.
Если это NSMutableArray
, вы можете использовать -exchangeObjectAtIndex:withObjectAtIndex:
, чтобы обменять пункт 0 и тот, который вы хотите переместить в начало. Не нужно возиться с retain
и release
.
(под редакцией - это не совсем то, что спрашивающий хотел - réponse по KennyTM является правильным для этого случая)
1) иметь в виду пункт 90
2) элементы перемещаются 0..89 один слот вниз (можно использовать func memmove())
3) положить прежний элемент «90» в слот 0
Я уверен, что использование memmove() с NSArray приведет к катастрофе. Это не похоже на то, что мы говорим о массивах C здесь. –
Согласна, это ужасная идея. – shosti
Продвинуть элемент 0 в нижнее положение? – Emil
Я не читал ваш вопрос достаточно внимательно - я думал, вы просто хотели обменять. Ответ KennyTM в этом случае правильный. – Jim