尝试将用户电子邮件和姓名保存到 Firebase 数据库时出现异常

Posted

技术标签:

【中文标题】尝试将用户电子邮件和姓名保存到 Firebase 数据库时出现异常【英文标题】:Exception when trying to save user email and name in to the Firebase DB 【发布时间】:2016-11-04 08:57:53 【问题描述】:

我正在使用 swift 3.0 开发一个项目,在尝试将两个字符串值保存到 Firebase 数据库时遇到以下异常

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

类的代码如下。 我错过了什么?

import UIKit
import Firebase

class ViewController: UIViewController 
    @IBOutlet weak var userNameTextField: UITextField!
    @IBOutlet weak var userEmailTextField: UITextField!
    @IBOutlet weak var passWordTextField: UITextField!

    override func viewDidLoad() 
        super.viewDidLoad()
//   
   
@IBAction func loginPressed(_ sender: AnyObject) 
 FIRAuth.auth()?.createUser(withEmail: userEmailTextField.text!, password: passWordTextField.text!, completion:  (user :FIRUser?, error) in
             if error != nil 

                print("error in login")
                return
             else
             print("loggin success")

             let ref = FIRDatabase.database().reference(fromURL: "https://chatsample-4cc11.firebaseio.com/")
                let values = ["username" : self.userNameTextField.text, "email" : self.userEmailTextField.text]
                ref.updateChildValues(values, withCompletionBlock:  (err, ref) in
                    if err != nil 
                    print(err)
                        return
                    
                    print("saved user successfully to firebase DB")
                )
                //ref.updateChildValues(values)
             //ref.updateChildValues(["somevalue": 123123])

             
            )
    


【问题讨论】:

【参考方案1】:

我认为问题在于您没有解开用户名和电子邮件的值,因此这些值的类型是可选的。你应该改成

let values = ["username" : self.userNameTextField.text!, "email" : self.userEmailTextField.text!]

【讨论】:

以上是关于尝试将用户电子邮件和姓名保存到 Firebase 数据库时出现异常的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Firebase 获取特定用户的用户名?

将图像存储到登录用户的firebase

无法从 firebase 中的文本字段表单中保存数据

如何在 Django 默认用户表中保存电子邮件和姓名字段

如何查找 Firebase 文档字段并删除文档

在 Google SignIn 和 Firebase 中验证用户后,Flutter 将电子邮件用户参数传递到另一个页面