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];
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.
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)
Nein. Sie können jedoch entpacke den Inhalt des NSArray in ein C-Array und verwende dann den Subscript-Operator.
Tags und Links objective-c cocoa nsarray xcode4