использование Firebase для сохранения и извлечения данных профиля пользователя - PullRequest
0 голосов
/ 10 мая 2018

Я недавно разрабатывал приложение для IOS с Firebase.Это должно быть приложение для обмена сообщениями.Мне удалось заставить процесс аутентификации работать, используя логин facebook и логин.Я также смог сохранить информацию о странице профиля пользователя в базе данных Firebase при входе в Facebook и получить эти данные из Firebase и представить их обратно в приложение.Тем не менее, когда я пытался получить те же данные с помощью электронной почты, приложение вылетало.Показывает поток 1: сигнал SIGABRT ошибка.Сообщение консоли было

Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '- [NSNull objectForKey:]: нераспознанный селектор, отправленный экземпляру 0x110c70cf0

Вотследующий код:

переопределить func viewDidLoad () {super.viewDidLoad ()

    let userSignedIn = Auth.auth().currentUser

    // to retrieve user info from firebase and show it on app profile page
    var refHandle = self.ref.child("users").observe(DataEventType.value, with: { (snapshot) in

        let usersDict = snapshot.value as? NSDictionary

        print(usersDict)

        let userDetails = usersDict?.object(forKey: self.user!.uid)

        print(userDetails)

        if self.ageTextfield.placeholder?.lowercased() == "age" {

            self.ageTextfield.text = (userDetails as AnyObject).object(forKey: "age") as! String

        }

        if self.sexTextfield.placeholder?.lowercased() == "sex" {

            self.sexTextfield.text = (userDetails as AnyObject).object(forKey: "sex") as! String
        }

        if self.nameTextfield.placeholder?.lowercased() == "name" {

            self.nameTextfield.text = (userDetails as AnyObject).object(forKey: "name") as! String
        }

        if self.occupationTextfield.placeholder?.lowercased() == "occupation" {

            self.occupationTextfield.text = (userDetails as AnyObject).object(forKey: "occupation") as! String
        }

        if self.hobbiesTextview.text.lowercased() == "hobbies" {

            self.hobbiesTextview.text = (userDetails as AnyObject).object(forKey: "hobbies") as! String
        }

    })

Я использовал точку останова исключения, и была выделена следующая строка:

self.ageTextfield.text = (userDetails as AnyObject).object(forKey: "age") as! String

Пожалуйстадай мне знать, что я сделал не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...