2009-04-22 6 views
35

Мне нужно создать динамический NSArray, то есть я не знаю размер массива или какие элементы будет иметь массив. Элементы должны быть добавлены в массив динамически. Я посмотрел ссылку на NSArray. Существует метод, называемый arrayWithObjects, который должен использоваться во время инициализации самого массива. Но я не знаю, как добиться того, что мне нужно.Элементы добавления NSArray

мне нужно сделать некоторые вещи, как следующее:

NSArray *stringArray = [[NSArray init] alloc] ; 
for (int i = 0; i < data.size; i++){ 
    stringArray.at(i) = getData(i); 
} 

ответ

73

Если вы создаете NSArray вы не сможете добавлять элементы к нему, так как он неизменен. Вместо этого вы должны попробовать использовать NSMutableArray.

Кроме того, вы перевернули порядок alloc и init. alloc создает экземпляр, и init инициализирует его.

Код будет выглядеть примерно так (при условии, getData глобальной функция):

NSMutableArray *stringArray = [[NSMutableArray alloc] init]; 
for(int i=0; i< data.size; i++){ 
    [stringArray addObject:getData(i)]; 
} 
4

Вот еще один способ, чтобы добавить объект в массиве, если вы работаете с неизменным массивом. Что является потокобезопасным.

Вы можете использовать метод arrayByAddingObject. Несколько раз это намного лучше. Вот дискуссия по этому поводу: NSMutableArray vs NSArray which is better

+0

'[массив arrayByAddingObject: @ "mažiukas"];' не добавляет новый элемент. –

1

Преобразование NSArray в NSMutableArray, а затем вы можете добавить значения динамически:

NSMutableArray *mutableStringArray = [stringArray mutableCopy]; 
[mutableStringArray addObject:@"theNewElement"]; 
Смежные вопросы