Xcode Firebase I 更新 Firebase 数据库值时出现问题

Posted

技术标签:

【中文标题】Xcode Firebase I 更新 Firebase 数据库值时出现问题【英文标题】:Xcode Firebase I Problem with updating Firebase database values 【发布时间】:2019-02-16 10:18:11 【问题描述】:

当我运行程序并更改一个值并将其发送到 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")
                        )
                    
                )
            )
        
    

【问题讨论】:

嗨,把所有的值作为字符串 - ["photo": "(profilePhotoURL)", 等等 【参考方案1】:

错误:由于未捕获的异常“InvalidFirebaseData”而终止应用程序,原因:“(updateChildValues:withCompletionBlock:) 无法将 UITextField 类型的对象存储在 .只能存储 NSNumber、NSString、NSDictionary 和 NSArray 类型的对象。'

错误表明函数updateChildValues:withCompletionBlock 正试图存储UITextField 类型的对象而不是文本。所以你应该检查你是否写了一些文本字段本身而不是文本字段的文本。

检查时,您会发现您在字典中添加了descriptionText,而不是文本。换行为:

guard let newDescription = self.descriptionText.text else  return 

【讨论】:

谢谢!没看到忘记写了。

以上是关于Xcode Firebase I 更新 Firebase 数据库值时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

颤振:致命错误:找不到模块“firebase_analytics”

Firebase 与 Swift

Cloud Functions for Firebase - 在一天中的特定时间更新值,每天 [重复]

Xcode UI 未使用最新的 Firebase 值更新

ld:在 Xcode 中找不到 -lFirebaseCore 的库反应原生

Xcode8/Swift 3 更新后缺少 Firebase 标头警告