2012-04-28 1 views
3

Есть ли способ ручного управления индексом, к которому мы хотим добавить наши данные, с помощью NSMutableArray? В PHP, например, мы можем сделать:Как добавить данные в NSMutableArray, вручную присвоив индекс?

$foo[2] = "fafa"; 
$foo[8] = "haha"; 

Может руководство присвоившей индексации будет сделано на NSMutableArray?

ответ

2

Просто потому, что это не полностью мне ясно, что TeamStar хочет разреженный массив, я просто упомянуть, что вы можете назначить объекты для конкретных индексов в пределах NSMutableArray - до тех пор, как массив уже достаточно длинный - с использованием -replaceObjectAtIndex:withObject:, а другой -replace… методов.

+0

Ну, причина в том, что я использую переключатель, который я использую, чтобы обновить массив row [] не добавлять больше данных в массив, если пользователи решают изменить параметр ... –

2

Нет, это невозможно. Вместо этого я предложил бы использовать NSMutableDictionary. Вы можете использовать NSNumbers в качестве индексов.

1
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index 

Важно Вызывает NSRangeException, если индекс больше, чем число элементов в массиве.

+1

Восстанавливает 'NSRangeException', если' index' больше числа элементов в массиве. – Costique

+0

Вы можете использовать цикл for и заполнить массив нулями. Но я не думаю, что это хорошая идея, вы попробовали NSMutableDictionary? – Edu

+0

, но разве это не делает его функцией? можно использовать, например; '@property (nonatomic, copy) NSMutableArray * rangenans;' , за которым следует: '[rangenans insertObject: label1.text atIndex: 0];' –

4

NSMutableArray s не являются разреженными - они не могут иметь промежутков, когда объекты не хранятся. Можно вставить объект с любым индексом от 0 до длины - 1, используя insertObject:atIndex: (как упоминал Эду), но кроме этого вы можете добавлять только объекты (используя addObject:).

Если необходимо связать объекты с произвольными целыми числами, вы можете использовать NSMapTable - functional interface позволяет целые ключи, или просто использовать NSMutableDictionary с NSNumber ключами (как drewag предложил).

Смотрите также: How to do sparse array in Cocoa