NSArray добавление элементов
-
13-09-2019 - |
Вопрос
Мне нужно создать динамический NSArray, то есть я не знаю размера массива и какие элементы он будет иметь.Элементы необходимо добавлять в массив динамически.Я посмотрел ссылку на класс NSArray.Существует метод arrayWithObjects, который следует использовать во время инициализации самого массива.Но я не знаю, как добиться того, что мне нужно.
Мне нужно сделать что-то вроде следующего:
NSArray *stringArray = [[NSArray init] alloc] ;
for (int i = 0; i < data.size; i++){
stringArray.at(i) = getData(i);
}
Решение
Если вы создадите NSArray
вы не сможете добавлять в него элементы, поскольку он неизменяем.Вам следует попробовать использовать NSMutableArray
вместо.
Кроме того, вы перевернули порядок alloc
и init
. alloc
создает экземпляр и init
инициализирует его.
Код будет выглядеть примерно так (при условии, что getData
это глобальная функция):
NSMutableArray *stringArray = [[NSMutableArray alloc] init];
for(int i=0; i< data.size; i++){
[stringArray addObject:getData(i)];
}
Другие советы
Вот еще один способ добавить объект в массив, если вы работаете с неизменяемым массивом.Что является потокобезопасным.
Вы можете использовать arrayByAddingObject
метод.Иногда это намного лучше.Вот обсуждение этого вопроса: NSmutableArray против NSArray, что лучше
Преобразуйте NSArray в NSmutableArray, а затем вы сможете добавлять значения динамически:
NSMutableArray *mutableStringArray = [stringArray mutableCopy];
[mutableStringArray addObject:@"theNewElement"];