swift - 将 Firebase 快照分配给变量
问题描述
我正在尝试将从 Firebase 数据库中读取的信息保存到变量中。这是我阅读信息的方式:
dbHandle = dbReference?.child("users").child(userEmail!).child("state").observe(.value, with: { (snapshot) in
if let userState = (snapshot.value as? String){
var taxRate = self.stateAbbreviations[userState]!
print(taxRate)
}
})
我现在的问题是如何使 userState 和 taxRate 在此调用之外可见?
我尝试在调用之外声明 userState,在内部对其进行初始化,然后再次在外部引用它,但它不起作用。例如:
var userState:String? = ""
dbHandle = dbReference?.child("users").child(userEmail!).child("state").observe(.value, with: { (snapshot) in
let userState = (snapshot.value as? String)
var taxRate = self.stateAbbreviations[userState]!
print(taxRate)
})
print(userState)
但它只打印出“”
有什么建议吗??
解决方案
您正在将 a 初始化var userState
为空字符串,并且您在完成之外的打印检索其默认值,在您的 firebase 完成中,您正在初始化另一个 userState 变量let userState =
如果你想在通话之外使用 userState 和 taxRate,你可以这样做,例如:
// Create your variables
var userState: String = “”
//Create a func with completion handler
func getUserStateAndTaxRate(completion:((String,String) -> Void)?) {
dbHandle = dbReference?.child("users").child(userEmail!).child("state").observe(.value, with: { (snapshot) in
let userState = (snapshot.value as? String)
var taxRate = self.stateAbbreviations[userState]!
print(taxRate)
completion?(userState, taxRate)
})
}
//Then call it
getUserStateAndTaxRate { (userState, taxRate) in
// userState and taxRate are now available
self.userState = userState
self.taxRate = taxRate
}
推荐阅读
- three.js - 在threejs中使用顶点着色器旋转几何体
- visual-studio - 无法在文件系统中部署 dtsx 包 - VS 2019 社区,SSDT
- powershell - 无法仅在完成最终结果后才显示 Powershell 列表
- java - (SSL) 将私钥加载到 android 密钥库中
- spring-boot - 具有 OAuth2 身份验证的独立 SpringBoot 应用程序
- javascript - 手动关闭 getDisplayMedia 的原生屏幕选择器
- python - Groupby 创建列表
- javascript - 根据提交按钮启用或禁用表单验证
- python - 正则表达式从文件中删除所有内容而不是Python中的匹配模式
- swift - UIScrollView在旋转视图Swift时开始缩放,如何禁用缩放?