Zugriff auf NSArray-Elemente mit Index

7

Ist es möglich, mit [idx] auf Objekte von NSArray zuzugreifen? Ich habe eine Standard-Bibliothek, die [] Style-Indizierung verwendet und ich möchte nicht die gesamte Bibliothek neu schreiben, um ObjCs objectAtIndex: Methode zu entsprechen.

Wie in NSArray *obj = [NSArray ...]; id item = obj[0];

    
David 12.11.2011, 17:54
quelle

3 Antworten

19

Die angenommene Antwort (obwohl sie zu der Zeit wahr ist) ist jetzt veraltet. Ab Xcode 4.5 können Sie nun NSArray-Elemente mit folgendem Befehl festlegen und abrufen:

%Vor%

Sie können das Gleiche auch für NSDictionaries tun mit:

%Vor%

Noch cooler: Sie können jetzt Array- und Dictionary-Objekte mit JSON-ähnlicher Syntax erstellen:

%Vor%

Und in ähnlicher Weise können Boxed-Werte wie NSNumber jetzt in einer Kurzschriftsyntax geschrieben werden:

%Vor%

BEARBEITEN:

Weitaus detailliertere Antwort als meine hier: Was sind die Details zu" Objective-C Literals ", die in den Versionshinweisen zu Xcode 4.4 erwähnt werden?

EDIT 2:

Um klar zu sein, obwohl diese Funktion erst in Xcode 4.5 hinzugefügt wurde, funktioniert sie unter iOS 4.3 und höher. Sie müssen also nicht auf diese Option verzichten, wenn Sie ältere iOS-Versionen unterstützen müssen.

EDIT 3:

Aus Gründen der pedantischen Genauigkeit funktioniert es auf Apple LLVM Compiler Version 4.1 und höher. AKA die Version, die mit Xcode 4.5 ausgeliefert wurde.

    
Nick Lockwood 16.11.2012, 20:03
quelle
1

Es ist leider nicht möglich (oder nicht). Die einzige Option, die Sie haben, besteht darin, einen C ++ - Wrapper um NSArray zu erstellen und operator[] zu überschreiben. Dann sollten alle Ihre Dateien, die diesen Wrapper verwenden, Objective-C ++ (d. H. Die Erweiterung .mm) korrekt kompiliert sein.

BEARBEITEN:

Eine Aktualisierung dieser Antwort. Ab Xcode 4.5 / iOS 6 ist es möglich, tiefgestellte Notationen für den Zugriff auf NSArray-Elemente zu verwenden:

%Vor%

Dies sind die offiziellen Release-Informationen zu Xcode 4.5 Formulierung:

  

Die Unterstützung für Subscripting mit der Syntax '[]' mit Objective-C-Containerobjekten wird für iOS 6.0 unterstützt.

(Danke Nick Lockwood für seinen Kommentar unten)

    
sergio 12.11.2011 18:01
quelle
0

Nein. Sie können jedoch entpacke den Inhalt des NSArray in ein C-Array und verwende dann den Subscript-Operator.

    
Peter Hosey 12.11.2011 21:25
quelle

Tags und Links