2009-10-21 11 views
27

Estoy tratando de crear una matriz de cadenas que se pueden aleatorizar y limitar a un cierto número x de cadenas.Cómo crear una matriz de cadenas en el objetivo c para iphone

Si la matriz se pudiera aleatorizar podría elegir las primeras x cadenas y eso funcionaría bien.

Estoy tratando de usar un código como éste Actualmente

NSString *statements[9]; 
statements[0] = @"hello"; 

Esto parece funcionar, pero la matriz parece estar lleno de los datos de basura.

¿Alguien puede ayudarme en la dirección correcta? (Es la asignación de memoria está haciendo en el camino equivocado?

Gracias

Respuesta

62

¿Quieres una matriz con nueve cadenas en ella?

[NSArray arrayWithObjects: @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", nil] 
+2

No olvide finalizar su matriz con nil. @ "lastString", nada]; (puede que solo sea mi iPhone el que no me muestre el final o su declaración. – JoePasq

2

Todo C matrices de auto como ese será lleno de basura hasta que se llene. Siempre y cuando no se está llena de basura más tarde, todo funciona como se espera. Sin embargo, Cocoa incluye la clase NSArray, que es más común para matrices de objetos (ya que hace una gestión de memoria adecuada y funciona con el resto del framework y todo eso).

1

Solo un consejo, no es necesario barajar el contenido de la matriz. Simplemente aleatorice el acceso. Para cada tarjeta que desee recoger del mazo, elija un número al azar y seleccione la tarjeta en ese índice. Luego, toma la carta superior y colócala donde estaba la tarjeta que acabas de recoger.

Si realmente desea ordenar la matriz, sin embargo, se puede hacer con muy poco código usando - sortedArrayUsingSelector: donde su método de comparación devuelve NSOrderedAscending o NSOrderedDescending al azar.

47

A partir de Xcode 4.4, puede utilizar Array Literals, que es mucho más limpio y fácil de leer. Ya no es necesario que incluya 'nil'. Por ejemplo:

NSArray *myArray = @[@"1", @"2", @"3", @"4", @"5"]; 
Cuestiones relacionadas