Der Versuch, ein Array schnell mit Zeichenfolgen aus den Schlüsseln eines Wörterbuchs zu füllen.
var componentArray: [String]
let dict = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Components", ofType: "plist")!)
componentArray = dict.allKeys
Dies gibt den Fehler "AnyObject" zurück, der nicht mit der Zeichenfolge identisch ist
Auch versucht
componentArray = dict.allKeys as String
aber get: 'String' kann nicht in [String] konvertiert werden
Mit Swift 3
Dictionary
hat einekeys
Eigenschaft.keys
hat die folgende Erklärung:Beachten Sie, dass
LazyMapCollection
die leicht zu einem abgebildet werden kannArray
mitArray
‚sinit(_:)
initializer.Von
NSDictionary
bis[String]
Das folgende iOS-
AppDelegate
Klassen-Snippet zeigt, wie Sie ein Array von Strings ([String]
) mithilfe derkeys
Eigenschaft von a abrufenNSDictionary
:Von
[String: Int]
bis[String]
Allgemeiner zeigt der folgende Playground-Code, wie ein Array von Zeichenfolgen (
[String]
) mithilfe derkeys
Eigenschaft aus einem Wörterbuch mit Zeichenfolgenschlüsseln und Ganzzahlwerten ([String: Int]
) abgerufen wird :Von
[Int: String]
bis[String]
Der folgende Spielplatzcode zeigt, wie Sie ein Array von Zeichenfolgen (
[String]
) mithilfe derkeys
Eigenschaft aus einem Wörterbuch mit Ganzzahlschlüsseln und Zeichenfolgenwerten ([Int: String]
) abrufen :quelle
Dictionary<String, String>.Keys
: Haben Sie einen Einblick, wann und wie wir diesen Typ verwenden möchten?Array aus Wörterbuchschlüsseln in Swift
quelle
dict.allKeys
ist kein String. Es ist ein[String]
, genau wie die Fehlermeldung Ihnen sagt , (vorausgesetzt natürlich, dass die Schlüssel sind alle Strings, das ist genau das, was Sie behaupten , wenn Sie das sagen).Beginnen Sie also entweder mit der Eingabe
componentArray
als[AnyObject]
, da dies in der Cocoa-API so eingegeben wird, oder, wenn Siedict.allKeys
es übertragen, in[String]
, weil Sie es so eingegeben habencomponentArray
.quelle
quelle
NSDictionary ist Klasse (Referenzübergabe) Wörterbuch ist Struktur (Wertübergabe ) ====== Array von NSDictionary ======
NSDictionary verfügt über allKeys und allValues erhalten Eigenschaften vom Typ [Any] .
====== Array aus dem Wörterbuch ======
Apple - Referenz für Dictionary Schlüssel und Werte Eigenschaften.
quelle
das gibt [String] https://developer.apple.com/documentation/swift/array/2945003-sorted
quelle
Aus der offiziellen Array Apple-Dokumentation :
init(_:)
- Erstellt ein Array mit den Elementen einer Sequenz.Erklärung
Parameter
s - Die Folge von Elementen, die in ein Array umgewandelt werden sollen.
Diskussion
quelle
Diese Antwort gilt für ein schnelles Wörterbuch mit String-Schlüsseln. Wie dieser unten .
Hier ist die Erweiterung, die ich verwenden werde.
Und ich werde später alle Schlüssel damit bekommen.
quelle
Swift 5
Das funktioniert bei mir.
quelle
Sie können dictionary.map wie folgt verwenden:
Die Erklärung: Map durchläuft das myDictionary und akzeptiert jedes Schlüssel- und Wertepaar als $ 0. Von hier aus können Sie $ 0.key oder $ 0.value erhalten. Innerhalb des nachfolgenden Verschlusses {} können Sie jedes Element transformieren und dieses Element zurückgeben. Da Sie $ 0 und es als String wollen, konvertieren Sie mit String ($ 0.key). Sie sammeln die transformierten Elemente in einem Array von Zeichenfolgen.
quelle
quelle