【问题标题】:How do I send whole object to Firebase database?如何将整个对象发送到 Firebase 数据库?
【发布时间】:2017-02-08 11:37:07
【问题描述】:

如何以正确的方式将具有自己属性的对象发送到数据库?

让我们说具有属性的对象:

class Test {
 var name:String
 var age:Int

 init(name: String, age: Int) {
  self.name = name
  self.age = age
 }
}

(...)
let obj = Test(name: "Jack", age: 25)
let databaseRef = FIRDatabase.database().reference().child("Person")

databaseRef.setValue(obj)

数据库应该是这样的:

每当我添加新人时,我都会得到新的孩子作为“人”父母。

提前致谢!

【问题讨论】:

    标签: ios firebase swift3 firebase-realtime-database


    【解决方案1】:

    为此,首先您需要使用childByAutoId() 生成唯一的personId,然后将人员详细信息添加到其中。

    let newPersonRef = FIRDatabase.database().reference().child("Person").childByAutoId()
    let obj = Test(name: "Jack", age: 25)
    newPersonRef.setValue(obj.toDictionary())
    

    如果您还想要新创建的人的唯一参考 ID:

    let newPersonRef = FIRDatabase.database().reference().child("Person").childByAutoId()
    print(newPersonRef.key)
    

    编辑:Test 类中添加一个返回类型为Any 的函数。

    func toDictionary() -> Any {
        return ["name":name, "age": age] as Any
    }
    

    然后在 Firebase 中这样设置测试对象:

    let obj = Test(name: "Jack", age: 25)
    newPersonRef.setValue(obj.toDictionary())
    

    【讨论】:

    • 发送 [Test]() 到数据库的方式是否相同?我必须使用“for each”循环?
    • @DerpyUnKnown 您需要使用 for 循环,因为您想设置唯一的人员 ID
    • 顺便说一句。 'InvalidFIrebaseData',原因:setValue 不能存储对象或类型测试。只能存储 NSNUmber、NSString、NSDictionary 和 NSArray 类型的对象
    • @DerpyUnKnown 我以为你只是为了显示而传递字典。让我编辑答案。
    • 非常感谢! Swift 的语法对我来说是全新的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2020-10-03
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多