Не удалось преобразовать значение типа __NSCFString в переключатель NSDictionary 5 - PullRequest
1 голос
/ 08 мая 2020

Я хочу получить список пользователей из базы данных Firebase и поместить его в массив Users, но я не могу получить данные из снимка

Это то, что я пробовал

class User: NSObject {
    var name: String?
    var email: String?
}

 var users : [User] = []

  func fetchUsers() {
        Database.database().reference().child("users").observe(.childAdded) { (snapshot) in
            for child in (snapshot.children) {
                let snap = child as! DataSnapshot
                let dic = snap.value as! [String: String] // erros here
                //print((dic["name"]))

                //WANT TO LOAD THE LIST OF USERS INTO `var users`
            }
        }
    }

Ошибка Could not cast value of type '__NSCFString' to 'NSDictionary'

Вот как мои данные выглядят в базе данных firebase

enter image description here

Спасибо за вашу помощь R

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Это потому, что DataSnapshot - это словарь от String от до Object . Это должно помочь

guard let dict = child.value as? [String : AnyObject] 
else { 
   print("couldn't cast to dictionary")
   return 
}
print("successfully cast to dictionary")
print(dict["name"])
print(dict["email"])
0 голосов
/ 08 мая 2020
func fetchUsers() {
        Database.database().reference().child("users").observe(.childAdded) { (snapshot) in
            for child in snapshot.children.allObjects as! [DataSnapshot] {
                print(child.value)

               if let dict = child.value as? [String : AnyObject] {
                if let email = dict["email"] {
                      print(email)

                  }

            }
        }
    }
 }
...