swift - 使用 Swift 在 Firebase 中获取孩子的孩子
问题描述
我有一个简单的 firebase 数据库,我需要从中获取子值。如何获取子字段值?这是我的数据库:
Users
-LddrOHGdBf_GcPrcvYn
FirstName: Mike
LastName: Smith
username: m@m.com
我一直在处理堆栈溢出问题,似乎没有什么能回答这个问题,但我知道这一定很容易。
import UIKit
import FirebaseDatabase
class CustProfileViewController: UIViewController {
var ref: DatabaseReference?
var tempName = ""
var tempFirstName = ""
@IBOutlet weak var username: UITextField!
@IBOutlet weak var firstName: UITextField!
@IBOutlet weak var editAddressButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference()
username.text = "m@m.com"
}
@IBAction func editAddressButtonPressed(_ sender: Any) {
self.ref?.child("Users").queryOrdered(byChild: "username").queryEqual(toValue: username.text!).observe(.value, with: { (snapShot) in
if (snapShot.value! is NSNull) {
print("nothing found")
} else {
print("found it!")
print(snapShot)
let snapShotValue = snapShot.value as! NSDictionary
let fName = snapShotValue["FirstName"] as? String
self.firstName.text = fName
print(self.firstName.text!)
}
})
}
}
我期望用 fName 填充 firstName 文本框,但它返回一个 nil 值。
解决方案
你可以试试
@IBAction func editAddressButtonPressed(_ sender: Any) {
self.ref?.child("Users").queryOrdered(byChild: "username").queryEqual(toValue: username.text!).observe(.value, with: { (snapShot) in
if !snapShot.exists() {
print("nothing found")
} else {
print("found it!")
print(snapShot)
let snapShotValue = snapShot.value as! [String:[String:Any]]
Array(snapShotValue.values).forEach {
let fName = $0["FirstName"] as! String
print(fName)
}
}
})
}
推荐阅读
- javascript - 未捕获的类型错误:无法在 JavaScript webshare api 中读取 null 的属性“addEventListener”
- android - 例外:未知编码:Android 上 kivy 上的 GBK
- java - 根据文档,Zookeeper 读取不完全一致,但创建 znode 是否完全一致?
- java - 如何使用 Android 片段将 Json 数据加载到下拉微调器中
- android - 一旦数据来自缓存,就无法再次从网络获取数据
- javascript - 如何在ui-grid angularjs中导出选定的列?
- go - 从 Go 更改父 shell 目录
- ios - 带有 iOS 粗体文本设置的条形按钮项目着色
- ruby-on-rails - 如何使用 Ruby on Rails 将字符串作为数组存储在数据库列中
- vulkan - VK_SUBPASS_EXTERNAL 到底是什么?