NSArray добавление элементов - PullRequest
37 голосов
/ 22 апреля 2009

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

Мне нужно сделать что-то вроде следующего:

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

Ответы [ 3 ]

76 голосов
/ 22 апреля 2009

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

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

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

NSMutableArray *stringArray = [[NSMutableArray alloc] init];
for(int i=0; i< data.size; i++){
   [stringArray addObject:getData(i)];
}
7 голосов
/ 26 июня 2014

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

Вы можете использовать arrayByAddingObject метод. Иногда это намного лучше. Вот обсуждение этого: NSMutableArray против NSArray, который лучше

3 голосов
/ 07 марта 2015

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

NSMutableArray *mutableStringArray = [stringArray mutableCopy];
[mutableStringArray addObject:@"theNewElement"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...