Le type 'N'importe lequel' n'a aucun membre indice après la mise à jour vers Swift 3
Voici mon code Swift:
currentUserFirebaseReference.observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in
let UID = snapshot.key
let pictureURL = snapshot.value!["pictureURL"] as! String
let name = snapshot.value!["displayname"] as! String
let currentUser = Person(name: name, bio: "", UID: UID, pictureURL: pictureURL)
self.currentUserInfo = currentUser
})
Je viens de mettre à jour de Xcode 8 /Swift 3, qui semble avoir causé le message d'erreur suivant:
"Type" Tout "n'a pas d'indice membres"
J'appelle snapshot.value!["
insérer quelque chose ici"]
dans de nombreux endroits dans mon code, j'obtiens cette erreur et je ne peux pas exécuter mon code.
Le code suivant fonctionne:
let pic = (snapshot.value as? NSDictionary)?["pictureURL"] as? String ?? ""
Cependant, je ne vois pas ce qui a changé ou que cela est nécessaire par rapport à comment c'était avant.
La seule chose qui a changé pour autant que je suis au courant, c'est la syntaxe de l'observer, mais je ne comprends pas pourquoi ce la cause de mon code en arrêt de travail.
source d'informationauteur user6820041
Vous devez vous connecter pour publier un commentaire.
Dans FIRDataSnapshot
value
est de typeid
.Dans Swift 3
id
est importé en tant queAny
.Dans le Firebase de la documentation, il dit
value
peut être l'un desNSDictionary
NSArray
NSNumber
ouNSString
- clairement, subscripting n'a pas de sens sur tous ces domaines, en particulier dans Swift. Si vous savez que c'est uneNSDictionary
dans votre cas, alors vous devriez jeter.J. Cocoe la réponse est absolument correct, mais pour ceux qui ont besoin d'un exemple de code c'est comment vous le faites:
au lieu de
essayer
L'idée est que vous avez besoin de jeter le type de capture instantanée.la valeur de Tout un NSDictionary.
Edit:
Que Connor l'a souligné, la force de déballage de l'instantané.valeur ou quoi que ce soit à partir d'un système de back-office est une mauvaise idée en raison de l'éventuelle réception des informations inattendues. Afin de vous changer! NSDictionary comme? NSDictionary.