我正在从 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/