¿Cómo declaro una matriz bidimensional de tipo de cadena en Objective-C?¿Cómo declarar una matriz bidimensional de tipo de cadena en Objective-C?
Respuesta
En primer lugar, puede considerar el uso de una clase para mantener las cadenas de su matriz interna o cargarla desde un archivo plist (en el cual es fácil hacer una 2da serie de cadenas).
Para declaraciones directas, tiene un par de opciones. Si desea utilizar una NSArray, que tendrá que crear manualmente la estructura como esta:
NSMutableArray *strings = [NSMutableArray array];
for(int i = 0; i < DESIRED_MAJOR_SIZE; i++)
{
[strings addObject: [NSMutableArray arrayWithObject:@"" count:DESIRED_MINOR_SIZE]];
}
O, usando literales de matriz, se puede obtener una versión inmutable así:
NSArray *strings = @[ @[ @"A", @"B", @"C" ], @[ @"D", @"E", @"F" ], @[ @"G", @"H", @"I" ] ]
a continuación, puede utilizar de esta manera:
NSString *s = [[strings objectAtIndex:i] objectAtIndex:j];
esto es algo torpe para inicializar, pero es el camino a seguir si desea utilizar los métodos NSArray.
Una alternativa es utilizar C matrices:
NSString *strings[MAJOR_SIZE][MINOR_SIZE] = {0}; // all start as nil
y luego usarlo como esto:
NSString *s = strings[i][j];
Esto es menos difícil, pero hay que tener cuidado de conservan/copia y liberan los valores a medida que los coloca y los elimina del conjunto. (! A menos que estés usando ARC, por supuesto) NSArray haría esto para usted, pero con arreglos de tipo C, que tiene que hacer algo como esto para reemplazar una matriz:
[strings[i][j] release];
strings[i][j] = [newString retain];
La otra diferencia es que se puede poner nil en la matriz de estilo C, pero no en las NSArrays, necesita usar NSNull para eso. También consulte la Pregunta de desbordamiento de pila Cocoa: Memory management with NSString para obtener más información sobre la gestión de memoria NSString.
+1 por salvarme un montón de tipeo. – Abizern
Si desea declarar e inicializar una matriz bidimensional de cadenas, se puede hacer esto:
NSArray *myArray = [NSArray arrayWithObjects:
[NSArray arrayWithObjects:@"item 1-1", @"item 1-2", nil],
[NSArray arrayWithObjects:@"item 2-1", @"item 2-2", nil],
[NSArray arrayWithObjects:@"item 3-1", @"item 3-2", nil],
[NSArray arrayWithObjects:@"item 4-1", @"item 4-2", nil],
nil];
Esto tiene la ventaja de que le da un conjunto inmutable.
hola Steve McLeod, ¿cómo puedo obtener valor del "elemento 1-1" si tengo myArray así? –
[[myArray objectAtIndex: 1] objectAtIndex: 1] – Hackmodford
Podría ser auto-publicidad, pero escribí un contenedor sobre NSMutableArray
para facilitar su uso como una matriz 2D. Está disponible en GitHub como CRL2DArray
aquí. https://github.com/tGilani/CRL2DArray
Procedente de Android (Java) Me sorprende lo difícil que es crear una matriz 2D en obj-C, gracias por el muy útil señor GitHub. –
El único problema es que me gustaría que hubiera más métodos integrados que un NSArray normal tiene como contar, etc. ¡Pero por ahora solo lo haré manualmente! –
- 1. inicialización de una matriz bidimensional de cadenas
- 2. matriz bidimensional en python
- 3. push() una matriz bidimensional
- 4. Cómo convertir matriz bidimensional a una matriz unidimensional en php5
- 5. matriz bidimensional de diferentes tipos
- 6. Creación de una matriz bidimensional en Objective-C
- 7. matriz bidimensional en ios
- 8. jquery creando una matriz bidimensional
- 9. buscar una matriz bidimensional en java
- 10. Comandos de matriz y división para crear una matriz bidimensional
- 11. ObjectiveC: ¿dónde declarar las propiedades de instancias privadas?
- 12. Inicializar una gran matriz bidimensional en C++
- 13. Rotar una matriz bidimensional en 90 grados
- 14. Encontrar vecinos en una matriz bidimensional
- 15. ¿Obtienes elementos adyacentes en una matriz bidimensional?
- 16. Cómo pasar una matriz bidimensional a una función en C++
- 17. Php empujando valores a una matriz bidimensional
- 18. Java - impresión de matriz bidimensional
- 19. ¿Cómo puedo declarar una propiedad de matriz?
- 20. ¿Cómo insertar valores en matriz bidimensional programáticamente?
- 21. 2 lista matriz bidimensional
- 22. php: declarar argumentos tipo de una función
- 23. ¿Cómo convierto una matriz bidimensional C# a un objeto JSON?
- 24. ¿Cómo puedo crear una matriz de longitud dinámica bidimensional?
- 25. ¿Cómo hash una matriz bidimensional de dos estados?
- 26. Ordenar una matriz bidimensional por segundo valor
- 27. Solo lectura de matriz bidimensional en C#
- 28. Ordenar una matriz bidimensional basado en una columna
- 29. ¿Cómo puedo ordenar una matriz bidimensional en C#?
- 30. ¿Cómo busco una matriz bidimensional en cualquier dirección?
Si está hablando de matriz NS (mutable), no la "declara". Un NSArray no tiene un tipo de contenido asignado, por lo que solo declaras el conjunto externo. Cómo lo usa depende de usted. –