Вопрос

Мне нужно создать динамический 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"];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top