2009-12-01 3 views
7

Мне было интересно, как мне создать NSArray с номерами 1-100, которые будут использоваться в UIPickerView.Инициализация NSArray с номерами

Я знаю из других классов программирования я мог сделать:

int array[100]; 
for (int i=1, i<=100, i++) 
    array[i]=i; 

Но я не знаю, как-то эквивалент с NSArray, вместо ручного ввода всех значений. Я обыскал его в Интернете, и я увидел, что кто-то сделал это с calloc и не был уверен, был ли это лучший метод, или если бы я мог обернуть int в NSNumber как-то и каждый из NSNumber зайти в мой массив. И если бы я должен был выполнить эту процедуру, создавал ли я тогда NSMutableArray и addObject каждый раз, проходя через цикл? Я хочу, чтобы эти значения загружались всякий раз, когда пользователь переходит на экран.

+0

Просто введите свой код, по крайней мере, 4 пробела, и он станет кодовым блоком. –

ответ

6

Либо:

NSArray * array = [NSArray array]; 
for (int i = 1 ; i <= 100 ; i ++) 
    array = [array arrayByAddingObject:[NSNumber numberWithInt:i]]; 

[array retain]; 

Или:

NSMutableArray * array = [[NSMutableArray alloc] initWithCapacity:100]; 
for (int i = 1 ; i <= 100 ; i ++) 
    [array addObject:[NSNumber numberWithInt:i]]; 

... должны делать то, что вы хотите. Если вы часто это делаете, вы можете подумать о создании категории для построения массива, содержащего диапазон.

+1

Не забудьте выпустить массив во втором примере, так как вы его разблокировали. (В этом отношении, почему сохранить его в первом примере?) –

+0

Не имея контекста, я представлял себе случай использования, который требовал его хранения. Но да, в любом случае результат должен быть выпущен в какой-то момент. – Skirwan

+3

Осторожно, используя конструкторы удобства в цикле. В первом примере будет создано 100 временных массивов, каждый из которых будет больше, чем последний. – 2009-12-02 18:47:40

Смежные вопросы