Come si dichiara un array bidimensionale di tipo stringa in Objective-C?Come dichiarare una matrice bidimensionale di tipo stringa in Objective-C?
risposta
In primo luogo, si potrebbe considerare l'utilizzo di una classe per contenere le stringhe dell'array interno o caricarlo da un file Plist (in cui è facile creare un array di stringhe 2D).
Per le dichiarazioni dirette, hai un paio di opzioni. Se si desidera utilizzare un NSArray, dovrete creare manualmente la struttura come questa:
NSMutableArray *strings = [NSMutableArray array];
for(int i = 0; i < DESIRED_MAJOR_SIZE; i++)
{
[strings addObject: [NSMutableArray arrayWithObject:@"" count:DESIRED_MINOR_SIZE]];
}
Oppure, utilizzando letterali di array, è possibile ottenere un immutabile versione come questo:
NSArray *strings = @[ @[ @"A", @"B", @"C" ], @[ @"D", @"E", @"F" ], @[ @"G", @"H", @"I" ] ]
è quindi possibile utilizzare in questo modo:
NSString *s = [[strings objectAtIndex:i] objectAtIndex:j];
questo è un po 'imbarazzante per inizializzare, ma è la strada da percorrere se si vuole utilizzare i metodi NSArray.
Un'alternativa è quella di utilizzare le matrici C:
NSString *strings[MAJOR_SIZE][MINOR_SIZE] = {0}; // all start as nil
e quindi utilizzarlo in questo modo:
NSString *s = strings[i][j];
Questo è meno imbarazzante, ma bisogna stare attenti a conservare/copia e rilasciano i valori mentre li si inserisce e li si rimuove dall'array. (! A meno che non si sta utilizzando ARC, ovviamente) NSArray avrebbe fatto questo per voi, ma con le matrici C-style, è necessario fare qualcosa di simile per sostituire un array:
[strings[i][j] release];
strings[i][j] = [newString retain];
L'altra differenza è che si può mettere nil nell'array in stile C, ma non negli NSArrays - per questo devi usare NSNull. Dai anche un'occhiata alla domanda Stack Overflow Cocoa: Memory management with NSString per ulteriori informazioni sulla gestione della memoria NSString.
+1 per avermi salvato un sacco di digitazione. – Abizern
Se si vuole dichiarare e inizializzare un array bidimensionale di stringhe, si può fare questo:
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];
Questo ha il vantaggio di dare una matrice immutabile.
ciao Steve McLeod, come posso ottenere il valore di "item 1-1" se ho myArray come questo. –
[[myArray objectAtIndex: 1] objectAtIndex: 1] – Hackmodford
Potrei essere auto-pubblicitario ma ho scritto un wrapper su NSMutableArray
come facile da usare come array 2D. Disponibile su GitHub come CRL2DArray
qui. https://github.com/tGilani/CRL2DArray
Proveniente da Android (Java) Sono sorpreso di quanto sia difficile creare un array 2D in obj-C, grazie per l'utilissimo GitHub signore! –
L'unico problema è che vorrei che ci fossero più metodi incorporati che un normale NSArray ha come conteggi, ecc. Ma per ora lo farò manualmente! –
- 1. Come convertire matrice bidimensionale ad una matrice bidimensionale in PHP5
- 2. inizializzazione di una matrice bidimensionale di stringhe
- 3. Matrice bidimensionale in python
- 4. Come stampare una matrice bidimensionale Perl?
- 5. stampa di una matrice bidimensionale in python
- 6. Dichiarare un array bidimensionale vuoto in Javascript?
- 7. Riferimento a una matrice bidimensionale
- 8. Matrice bidimensionale di diversi tipi
- 9. C# assegnano 1 matrice bidimensionale di sintassi 2 matrice bidimensionale
- 10. Come implementare una matrice bidimensionale di struct in C
- 11. dichiarare una matrice costante
- 12. Come posso dichiarare una proprietà di matrice?
- 13. Come si cerca una matrice bidimensionale in qualsiasi direzione
- 14. Come filtrare una matrice bidimensionale in base al valore
- 15. SQLite come dichiarare come matrice di byte?
- 16. lettura JSON doppia matrice bidimensionale in Java
- 17. Trovare la posizione di un elemento in una matrice bidimensionale?
- 18. Come dichiarare una lunga stringa in Python?
- 19. converte array bidimensionale in stringa
- 20. Come dichiarare una matrice 2D di dimensioni variabili in C?
- 21. Come dichiarare una matrice di scalari allocabili in Fortran?
- 22. Come dichiarare una matrice di oggetti in C#
- 23. usando array_search multi matrice bidimensionale
- 24. matrice bidimensionale utilizzando i modelli
- 25. Come posso dichiarare un array di stringhe bidimensionale?
- 26. C: Dimensioni della matrice bidimensionale
- 27. Ordinamento di una matrice bidimensionale per il secondo valore
- 28. Come dichiarare una matrice di diversi tipi di dati
- 29. Array e Split comandi per creare una matrice bidimensionale 2
- 30. Come dichiarare e iterare una matrice in XSLT?
Se si sta parlando di array NS (Mutevole), non si "dichiara". Un NSArray non ha un tipo di contenuto assegnato, quindi dichiarare semplicemente l'array esterno. Come lo usi dipende da te. –