【发布时间】:2017-08-09 20:50:37
【问题描述】:
大家好,我一直在使用 firebase 从数据库中写入和读取值。在我编写了一个函数来检索通过以下方式使用 swift 存储的值或产品之前,它的工作非常棒。
这是我的代码
func retrieveLiveUrlFor(product: Product){
if let path = product.prodRef{
print("Looking for : \(path)")
var liveUrl = ""
let ref = Database.database().reference(withPath: path)
ref.observe(. value, with: {
snapshot in
print("Snap : \(snapshot.value)")
if snapshot.exists(){
print("Snap : \(snapshot.value)")
let dic = snapshot.value as? NSDictionary
if dic != nil{
let url = dic?["liveUrl"] as? String
print("Url is here")
if url != nil{
print("URL is not nil")
liveUrl = url as! String
}
}
}
if (self.productdelegate != nil){
print("Calling Product delegate")
self.productdelegate?.liveUrlObtained!(liveUrl: liveUrl)
}
})
}
}
这是我试图检索的路径的值
产品/直播/全球/WpMvDJZUclRlfHFJsSlBEbi0jHf1
这是 firebase 数据库的快照
snapshot.value 总是在 swift 中返回 null。 当我使用
打印时print("Snap: \(snapshot.value)")
它打印以下内容
捕捉:可选() 请指导我做错了什么,以便我可以解决它。
【问题讨论】:
-
我认为您的数据库结构不好检查 Firebase 文档firebase.google.com/docs/database/android/structure-data 避免嵌套数据结构,当您在查询时拥有并获得数千条记录时,它可能会产生问题
-
@AnasMehar 你能解释一下它有什么问题吗?如果有一些差异,那么你必须提供一个解决方案,而不是仅仅说它是错误的。请,我正在等待答案。
-
-
@AnasMehar 那么我应该在这里做什么?请根据我的情况提出建议?
标签: ios swift firebase firebase-realtime-database