Wie deklariere ich ein zweidimensionales Array von String-Typ in Objective-C?Wie deklariert man ein zweidimensionales Array von String-Typ in Objective-C?
Antwort
Zuerst sollten Sie eine Klasse verwenden, um die Strings Ihres inneren Arrays zu halten oder sie aus einer PLIST-Datei zu laden (in der es einfach ist, ein 2D-Array von Strings zu erstellen).
Für direkte Deklarationen haben Sie ein paar Optionen. Wenn Sie eine NSArray verwenden möchten, müssen Sie manuell, um die Struktur wie folgt zu erstellen:
NSMutableArray *strings = [NSMutableArray array];
for(int i = 0; i < DESIRED_MAJOR_SIZE; i++)
{
[strings addObject: [NSMutableArray arrayWithObject:@"" count:DESIRED_MINOR_SIZE]];
}
Oder Array Literale verwenden, können Sie eine unveränderlich Version wie diese:
NSArray *strings = @[ @[ @"A", @"B", @"C" ], @[ @"D", @"E", @"F" ], @[ @"G", @"H", @"I" ] ]
Sie können es dann wie folgt verwenden:
NSString *s = [[strings objectAtIndex:i] objectAtIndex:j];
diese etwas umständlich zu initialisieren, aber es ist der Weg zu gehen, wenn Sie die NSArray Methoden verwenden möchten.
Eine Alternative ist C-Arrays zu verwenden:
NSString *strings[MAJOR_SIZE][MINOR_SIZE] = {0}; // all start as nil
Und es dann wie folgt verwenden:
NSString *s = strings[i][j];
Dies ist weniger umständlich, aber man muss vorsichtig sein, um behalten/kopieren und release Werte wie Sie sie in und entfernen Sie sie aus dem Array. (! Es sei denn, Sie verwenden ARC, natürlich) NSArray dies für Sie tun würden, aber mit C-Stil-Arrays, müssen Sie so etwas tun, um ein Array ersetzen:
[strings[i][j] release];
strings[i][j] = [newString retain];
Der andere Unterschied ist, dass Sie kann Nil in das C-artige Array setzen, aber nicht die NSArrays - dafür musst du NSNull verwenden. Werfen Sie einen Blick auf Stack Overflow Frage Cocoa: Memory management with NSString für mehr über NSString Speicherverwaltung.
+1 für mich viel Tipparbeit zu speichern. – Abizern
Wenn Sie ein zweidimensionales Array von Strings deklarieren und initialisieren möchten, können Sie dies tun:
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];
Dies hat den Vorteil, den Sie eine unveränderliche Array zu geben.
Hallo Steve McLeod, wie bekomme ich den Wert von "Item 1-1" wenn ich myArray so habe. –
[[myArray objectAtIndex: 1] objectAtIndex: 1] – Hackmodford
Ich könnte selbst Werbung sein, aber ich schrieb einen Wrapper über NSMutableArray
für die einfache Verwendung als 2D-Array. Es ist verfügbar auf GitHub als CRL2DArray
hier. https://github.com/tGilani/CRL2DArray
Kommt aus Android (Java) Ich bin überrascht wie schwierig es ist ein 2D Array in obj-C zu erstellen, danke für den sehr nützlichen GitHub sir! –
Das einzige Problem ist, dass ich wünschte, es gäbe mehr integrierte Methoden, die ein normales NSArray zählen kann, usw. Aber für den Moment werde ich es nur manuell tun! –
- 1. Elasticsearch wie man ein zweidimensionales Array anpasst?
- 2. 'Crop' ein zweidimensionales Array?
- 3. Wie man ein Swift Array deklariert
- 4. Verweis auf ein zweidimensionales Array
- 5. Wie filtert man ein zweidimensionales Array nach Wert
- 6. Wie erstellt man ein zweidimensionales Array und fügt Werte hinzu?
- 7. Wie man ein Array von Nullen in Python deklariert (oder ein Array mit einer bestimmten Größe)
- 8. Wie können Werte programmgesteuert in ein zweidimensionales Array eingefügt werden?
- 9. Wie kann ich HTML-Tabellendaten in ein zweidimensionales Array "deserialisieren"?
- 10. Wie ein zweidimensionales parcel Array von parcelables erstellen:
- 11. Zweidimensionales Array verschiedener Typen
- 12. Generiere ein zweidimensionales Array über LINQ
- 13. Einfachste Möglichkeit, ein zweidimensionales Array zu implodieren()?
- 14. Wie man Array von benutzerdefinierten Objekten in Swift korrekt deklariert?
- 15. Wie erhält man ein Array von Permutationen von Array-Elementen?
- 16. Wie richtig ein zweidimensionales Array in Javascript initialisieren?
- 17. Wie Schleife durch zweidimensionales Array?
- 18. Zweidimensionales assoziatives Array in PHP
- 19. Wie suche ich ein zweidimensionales Array in einer beliebigen Richtung
- 20. Importieren von Daten aus Excel in ein zweidimensionales Array
- 21. Wie kann ich ein zweidimensionales Array in Perl drucken?
- 22. Wie deklariert man ein String-Array unbekannter Größe?
- 23. VB.NET Wie man ein neues leeres Array bekannter Länge deklariert
- 24. Löschen Sie ein zweidimensionales Session-Array
- 25. Wie man array of handel deklariert?
- 26. Wie konvertiert man eine Reihe von Arrays in ein zweidimensionales Array?
- 27. Wie deklariere ich ein zweidimensionales Array am einfachsten in PHP?
- 28. Wie können Sie ein zweidimensionales Array in C umwandeln?
- 29. Zweidimensionales Array in Java schreiben
- 30. Zweidimensionales Array-Additionsproblem
Wenn Sie NS (Mutable) Array sprechen, "deklarieren" Sie es nicht. Ein NSArray hat keinen zugewiesenen Inhaltstyp, daher deklarieren Sie einfach das äußere Array. Wie Sie es verwenden, bleibt Ihnen überlassen. –