无法使用 Swift 5 (iOS) 从 Firebase 数据库中获取和打印单个值
Posted
技术标签:
【中文标题】无法使用 Swift 5 (iOS) 从 Firebase 数据库中获取和打印单个值【英文标题】:Unable to fetch and print a single value from a Firebase Database with Swift 5 (iOS) 【发布时间】:2020-04-05 14:15:15 【问题描述】:目标: 尝试从我的 Firebase 实时数据库中将值“email”打印到 XCode 11 控制台中。请查看提供的代码和 JSON 摘录。
评论:一个似乎很明显的问题,但是在尝试了几个建议(包括Swift Get Specific Value From Firebase Database 和 Firebase 文档)之后,我似乎仍然错过了一些东西。
代码:
func updateRiskValue()
var databaseReference: DatabaseReference!
databaseReference = Database.database().reference()
let currentUser = Auth.auth().currentUser
databaseReference.child("users").child((currentUser?.uid)!).child("email").observeSingleEvent(of: .value, with: (snapshot) in
let value = snapshot.value as? NSDictionary
let valueRisk = value?["email"] as? String ?? ""
print(valueRisk)
) (error) in
print(error.localizedDescription)
@IBAction func riskSlider(_ sender: UISlider)
updateRiskValue()
JSON 摘录:
"users" :
"ihhqjBDfIYeyl5QqsnFl1LVrXRG3" :
"email" : "alexander@gmail.com",
"isCheckedCount" : 3,
"kycitems" :
"Attach Government Documents" :
"isChecked" : false
,
"Client Knowledge" :
"isChecked" : true
,
"Contact Information" :
"isChecked" : true
,
"PEP Check" :
"isChecked" : true
,
"Risk Assessment" :
"isChecked" : true
,
"Source of Wealth" :
"isChecked" : true
,
"Transit Account Holders" :
"isChecked" : true
,
"Transit Account Numbers" :
"isChecked" : false
,
"password" : "123123",
"riskValue" : "1",
"todos" :
"Hello" :
"isChecked" : false
【问题讨论】:
【参考方案1】:您正在向/Users/$uid/email
添加观察者,因此您获得的snapshot
仅包含email
属性的值。但是,您将其视为字典,这解释了为什么您的代码不起作用。
要解决此问题,请从
databaseReference.child("users").child((currentUser?.uid)!).child("email").observeSingleEvent(of: .value, with: (snapshot) in
let valueRisk = snapshot.value as? String
print(valueRisk)
) (error) in
print(error.localizedDescription)
【讨论】:
感谢您的建议!但是在应用时,该函数只返回“nil”。 糟糕,我在代码 sn-p 中有一个类型,但仍然尝试将其转换为字典。它现在正在转换为一个字符串,它应该可以工作(如果值存在)。以上是关于无法使用 Swift 5 (iOS) 从 Firebase 数据库中获取和打印单个值的主要内容,如果未能解决你的问题,请参考以下文章
无法从 UIDocumentPickerViewController ios swift 获取 .doc 文件
使用 Swift 5 - PDFKit 在 iOS 中编辑和保存现有的 pdf 文档
在 swift 3 中下载文件时,alamo fire 中的进度视图不会更新
无法从 UITextField 获取文本 - Swift - iOS