2009-12-01 8 views
7

Me preguntaba cómo hago para crear un NSArray con decir números del 1 al 100 para ser usado en un UIPickerView.Inicialización de NSArray con números

sé de otras clases de programación que podía hacer:

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

pero no estoy seguro de cómo algo equivalente con NSArray, en lugar de escribir manualmente en todos los valores. Lo busqué en línea y vi que alguien lo hizo con calloc y no estaba seguro si ese era el mejor método, o si podía envolver el int en un NSNumber de alguna manera y tener cada NSNumber en mi matriz. Y si tuviera que hacer este procedimiento, ¿crearía un NSMutableArray y addObject cada vez que ejecutara el ciclo? Quiero que estos valores se carguen cada vez que el usuario va a la pantalla.

+0

Simplemente aplique su código con al menos 4 espacios y se convertirá en un bloque de código. –

Respuesta

6

O bien:

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

[array retain]; 

O:

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

... debe hacer lo que quiera. Si esto es algo que está haciendo a menudo, puede considerar crear una categoría para construir una matriz que contenga un rango.

+1

No olvides lanzar la matriz en el segundo ejemplo, ya que la has desbloqueado. (Para el caso, ¿por qué retenerlo en el primer ejemplo?) –

+0

Al carecer de contexto, imaginé un caso de uso que requería mantenerlo. Pero sí, en cualquier caso, el resultado deberá ser liberado en algún momento. – Skirwan

+3

Cuidado al usar constructores de conveniencia en bucles. El primer ejemplo creará 100 matrices temporales, cada una más grande que la anterior. –