Comment récupérer une valeur à partir du dictionnaire de Swift 3
J'ai cette fonction qui extraire les utilisateurs de FireBase
et de les convertir en Dictionary
:
let leaderBoardDB = FIRDatabase.database().reference().child("scores1").queryOrderedByValue().queryLimited(toLast: 5)
leaderBoardDB.observe( .value, with: { (snapshot) in
print("scores scores", snapshot)
if let dictionary = snapshot.value as? [String: Any] {
for playa in dictionary {
let player = Player()
print("plaaaaayyyyyaaaaa", playa)
print("plaaaaayyyyyaaaaa key", playa.key)
print("plaaaaayyyyyaaaaa.value", playa.value)
player.id = playa.key
print(playa.key["name"])
}
}
}, withCancel: nil)
}
et j'obtiens ce résultat:
plaaaaayyyyyaaaaa ("inovoID", {
nom = Tatiana;
points = 6; }) plaaaaayyyyyaaaaa clé inovoID plaaaaayyyyyaaaaa.valeur {
nom = Tatiana;
points = 6; } aaaa i id de l'Option("inovoID")
le problème est que je ne peux pas obtenir le nom et les points de l'utilisateur. quand je l'ai essayer avec:
print(playa.key["name"])
il m'accordait cette erreur:
Ne peut pas l'indice d'une valeur de type 'String' avec un indice de type "Chaîne"
quelqu'un peut-il m'aider, s'il vous plaît?
- playa.objectForKey("nom"), il doit travailler
- il n'a pas. il dit: Valeur du tuple de type "(clés: Chaîne de valeur: de Tout) "n'a pas de membre "objectForKey'
Vous devez vous connecter pour publier un commentaire.
Depuis votre JSON est
playa.key
est"inovoID"
playa.value
est{ "name" : "Tatiana", "points" : 6 }
La clé est
String
et ne peut pas être indicé. C'est ce que l'erreur dit.Vous devez vous abonner à la valeur et en toute sécurité cast le type à l'aide du compilateur.
print(person[0] as! String)
simplement en se référant à l'index?Je pense que vous êtes à la recherche pour:
player.name = dictionary["name"] as? String
Vous n'avez pas besoin de parcourir le dictionnaire pour accéder à ses valeurs. Si vous êtes à la recherche de la valeur d'une clé, il vous suffit de l'obtenir.
print(person[0] as! String)
simplement en se référant à l'index?Array
pas unDictionary