я пытаюсь получить данные снимка и назначить его метке, которую я сделал, но я получаю сообщение об ошибке Невозможно присвоить значение типа «[String: Any]» для типа «String» - PullRequest
0 голосов
/ 11 апреля 2020

я пытаюсь получить данные снимка и назначить их метке, которую я сделал, но я получаю ошибку. Невозможно присвоить значение типа '[String: Any]' для типа "String", скорее всего это я, и просто плохой код. или помощь будет высоко ценится

    func loadUserName(){

    if(AccessToken.current != nil){
        //perform code FOR FACEBOOK YOUR GOING TO HAVE TO GRAB IT FROM FIREBASE

        FirebaseReferece(.User).document(AccessToken.current!.userID).collection("first_name").getDocuments { (snapshot, error) in
            if (error != nil) {

                print("error getting username description is \(error!.localizedDescription)")
            } else {

                for allDocument in snapshot!.documents {

                    let currentUsername = allDocument.data()

                    self.usernameTextLabel.text! = currentUsername



                }
            }


        }

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Это потому, что ответ, который вы получаете от firebase, выглядит как [String: Any], а String - это ключ к атрибуту вашего объекта. Так что в вашем случае, если вы хотите получить «имя_папки» вашего пользователя, вы должны написать что-то вроде этого.

self.usernameTextLabel.text! = currentUsername["first_name"]
1 голос
/ 11 апреля 2020

Согласно документации API, data () без аргументов возвращает NSDictionary, содержащий все поля в документе, проиндексированные по имени поля. Это, очевидно, не строка, и вы не можете использовать ее как таковую для заполнения своего представления.

Может быть, вместо этого вы хотите использовать get (x) и передать имя поле (которое мы не знаем наверняка. Или, может быть, индекс в словаре, чтобы найти то, что вам нужно:

let data = allDocument.data()
let value = data["name_of_the_field"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...