Xcode Firebase I Проблема с обновлением значений базы данных Firebase - PullRequest
0 голосов
/ 16 февраля 2019

Когда я запускаю программу, изменяю значение и отправляю его в Firebase, я получаю ошибку: Завершение приложения из-за необработанного исключения «InvalidFirebaseData», причина: «(updateChildValues: withCompletionBlock :) Не удается сохранить объект типа UITextField в.Может хранить только объекты типа NSNumber, NSString, NSDictionary и NSArray. '

func updateUsersProfile() {
    //check to see if the user is logged in
    if let userID = Auth.auth().currentUser?.uid {
        //create an access point the Firebase storage
        let storageItem = storageRef.child("profile_images").child(userID)
        //get the image uploaded from photo library
        guard let image = profileImageView.image else { return }
        if let newImage = image.pngData() {
            //upload to Firebase storage
            storageItem.putData(newImage, metadata: nil, completion: {
                (metadata, error) in
                if error != nil {
                    print(error!)
                    return
                }
                storageItem.downloadURL(completion: { (url, error) in
                    if error != nil {
                        print(error!)
                        return
                    }
                    if let profilePhotoURL = url?.absoluteString {
                        guard let newUserName = self.usernameText.text else { return }
                        guard let newDisplayName = self.displayNameText.text else { return }
                        guard let newBioText = self.bioText.text else { return }
                        guard let newDescription = self.descriptionText else { return }

                        let newValuesForProfile =
                            ["photo": profilePhotoURL,
                             "username": newUserName,
                             "displayname": newDisplayName,
                             "mydescription": newDescription,
                             "bio": newBioText]

                        //Update the Firebase database for that user
                        self.databaseRef.child("profile").child(userID).updateChildValues(newValuesForProfile, withCompletionBlock: { (error, ref) in
                            if error != nil {
                                print(error!)
                                return
                            }
                            print("Profile successfully updated")
                        })
                    }
                })
            })
        }
    }

1 Ответ

0 голосов
/ 16 февраля 2019

ошибка: завершение работы приложения из-за необработанного исключения InvalidFirebaseData, причина: '(updateChildValues: withCompletionBlock :) Невозможно сохранить объект типа UITextField в.Может хранить только объекты типа NSNumber, NSString, NSDictionary и NSArray. '

Ошибка указывает, что функция updateChildValues:withCompletionBlock пытается сохранить некоторый объект типа UITextField, а не текст.Поэтому вам следует проверить, не написали ли вы какое-либо текстовое поле, а не текстовое поле.

При изучении вы обнаружите, что вы добавили descriptionText в словарь, а не в текст.Измените строку следующим образом:

guard let newDescription = self.descriptionText.text else { return }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...