Essayer de remplir un tableau avec des chaînes à partir des clés d'un dictionnaire en swift.
var componentArray: [String]
let dict = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Components", ofType: "plist")!)
componentArray = dict.allKeys
Cela renvoie une erreur de: «AnyObject» non identique à la chaîne
A également essayé
componentArray = dict.allKeys as String
mais obtenez: 'String' n'est pas convertible en [String]
Avec Swift 3,
Dictionary
a unekeys
propriété.keys
a la déclaration suivante:Notez que
LazyMapCollection
cela peut facilement être mis en correspondance avec unArray
avecArray
de »init(_:)
l'initialiseur.De
NSDictionary
au[String]
L'
AppDelegate
extrait de classe iOS suivant montre comment obtenir un tableau de chaînes ([String]
) à l'aidekeys
d'une propriété à partir d'unNSDictionary
:Du
[String: Int]
au[String]
De manière plus générale, le code Playground suivant montre comment obtenir un tableau de chaînes (
[String]
) en utilisant lakeys
propriété d'un dictionnaire avec des clés de chaîne et des valeurs entières ([String: Int]
):Du
[Int: String]
au[String]
Le code Playground suivant montre comment obtenir un tableau de chaînes (
[String]
) en utilisant lakeys
propriété d'un dictionnaire avec des clés entières et des valeurs de chaîne ([Int: String]
):la source
Dictionary<String, String>.Keys
- avez-vous une idée quand nous voudrions utiliser ce type et comment?Tableau à partir des clés de dictionnaire dans Swift
la source
dict.allKeys
n'est pas une chaîne. C'est un[String]
, exactement comme le message d'erreur vous l'indique (en supposant, bien sûr, que les clés sont toutes des chaînes; c'est exactement ce que vous affirmez lorsque vous dites cela).Donc, commencez par taper
componentArray
as[AnyObject]
, car c'est ainsi qu'il est tapé dans l'API Cocoa, ou bien, si vous transtypezdict.allKeys
, transtypez-le[String]
, car c'est ainsi que vous avez tapécomponentArray
.la source
la source
NSDictionary est une classe (passe par référence) Dictionary est une structure (passe par valeur ) ====== Tableau de NSDictionary ======
NSDictionary a allKeys et allValues obtiennent des propriétés de type [Any] .
====== Tableau du dictionnaire ======
Référence Apple pour les propriétés des clés et valeurs du dictionnaire .
la source
qui donne [String] https://developer.apple.com/documentation/swift/array/2945003-sorted
la source
À partir de la documentation officielle d' Array Apple :
init(_:)
- Crée un tableau contenant les éléments d'une séquence.Déclaration
Paramètres
s - La séquence d'éléments à transformer en tableau.
Discussion
la source
Vous pouvez utiliser dictionary.map comme ceci:
L'explication: la carte parcourt le myDictionary et accepte chaque paire de clés et de valeurs comme $ 0. De là, vous pouvez obtenir $ 0.key ou $ 0.value. À l'intérieur de la fermeture arrière {}, vous pouvez transformer chaque élément et renvoyer cet élément. Puisque vous voulez $ 0 et que vous le voulez sous forme de chaîne, vous convertissez en utilisant String ($ 0.key). Vous collectez les éléments transformés dans un tableau de chaînes.
la source
Cette réponse sera pour le dictionnaire rapide avec des clés de chaîne. Comme celui-ci ci-dessous .
Voici l'extension que j'utiliserai.
Et j'obtiendrai toutes les clés plus tard en utilisant ceci.
la source
Swift 5
Cela fonctionne pour moi.
la source
la source