firebase - 将 Firebase 快照转换到 Swift 3 对象

标签 firebase swift3 firebase-realtime-database

我正在从 Firebase 数据库中检索对象,我需要将它们转换为自定义结构类对象

类:

struct Request {
    var Address: String!
    var Position: Position!
    var RequestID: String!
    var Status: String!
}

从我的 Firebase 数据库获取快照的函数:

self.ref.child("requests").observe(.childAdded, with: { snapshot in

    //I need to cast this snapshot object to a new Request object here

    let dataChange = snapshot.value as? [String:AnyObject]

    print(dataChange)

})

我怎样才能完成这件事?

最佳答案

一些事情。 Firebase 没有对象——它是一个 JSON 结构。当你像这样获得 snapshot.value 时:

let dataChange = snapshot.value as? [String:AnyObject]

[String: AnyObject] 将数据定义为字典。

然后您可以像这样访问 dataChange 中的键值对

let address = dataChange["address"]

let position = dataChange["position"]

从那里您可以创建新对象并将它们填充到闭包中(例如将它们添加到数组中),或者在对象中添加更多智能并传递字典并让对象填充自身。

以下是伪代码,但它展示了过程:

//create the object and populate it 'manually'
self.ref.child("requests").observe(.childAdded, with: { snapshot in

    let dataChange = snapshot.value as? [String:AnyObject]

    let aRequest = Request()
    aRequest.address = dataChange["address"]
    aRequest.position = dataChange["position"]
    self.requestArray.append(aRequest)
})

Class Request {

   var address = ""
   var position = ""

   func initWithDict(aDict: [String: AnyObject]) {
    self.address = aDict["address"]
    self.position = aDict["position"]
   }

}

//let the object populate itself.
self.ref.child("requests").observe(.childAdded, with: { snapshot in

    let dataChange = snapshot.value as? [String:AnyObject]
    let aRequest = Request(initWithDict: dataChange)
    self.requestArray.append(aRequest)
})

关于firebase - 将 Firebase 快照转换到 Swift 3 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400574/

相关文章:

swift - 按下按钮时将 UIViewController .xib 添加到 UIViewController

typescript - 如何使用 typescript 在 firebase 函数中迭代实时数据库

Firebase实时数据库REST事件流: do not download the whole tree

java - Sql Like query for Firebase Database Reference with MaterialSearchBar

ios - 如何解决 swift iOS 的 libc++abi.dylib 错误

javascript - Firebase Cloud Functions - sendToTopic() 格式错误

javascript - Firebase JavaScript - 数组中的映射值仅显示最后一项

swift - 线程1 : Signal SIGABRT in Swift 3

ios - 在 Swift 4 中滚动 UITableView 时如何更新 UISlider 值

c# - OrderByChild 不会订购,Firebase 实时数据库