iOS 14 & XCode 12 beta 2 - 从Firebase读取数据



我正在用XCode 12 beta 2编写一个iOS应用程序,我被卡住了,因为我需要从Firebase读取一些数据。默认情况下,我从Firebase文档中获取了代码,并添加了一些内容:

Auth.auth().signIn(withEmail: email, password: password) { (result, error) in

print("Logged in!")

// Loading Database
var ref: DatabaseReference!
ref = Database.database().reference()

let userID = Auth.auth().currentUser?.uid

ref.child("users").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in

// Get user values
let value = snapshot.value as? NSDictionary
let dataFirstname = value?["firstname"] as? String ?? ""
let dataLastname = value?["lastname"] as? String ?? ""

// Setup labels
self.namesLabel.text = "(dataFirstname) (dataLastname)"
self.passwordLabel.text = self.password
self.emailLabel.text = self.email

}) { (error) in
print(error.localizedDescription)
}
}

问题在于;dataFirstname";以及";dataLastname";不是从数据库中获取的。问题似乎来自于";设值="我在调试代码时看到的。我还是Swift的新手,如果有任何帮助,我们将不胜感激!谢谢你的阅读,我希望你能帮助我!--最大

如果snapshot.value不能表示为NSDictionary(在Swift中有点不推荐使用(,则会得到nil

查看正确类型的最快方法是记录对象:print(snapshot.value)

您还可以添加断点并检查内容

所以我成功地正确读取了数据。对于那些对此感兴趣的人,这是我的最后一条代码。感谢所有帮助我的人!

// Loggin-in
Auth.auth().signIn(withEmail: email, password: password) { (result, error) in

if error != nil {

// Couldn't log-in
self.alertUser("Error", error!.localizedDescription)

} else {

print("Logged in!")

// Loading Database
let userID = Auth.auth().currentUser?.uid
let db = Firestore.firestore()
let ref = db.collection("users").document(userID!)
ref.getDocument { (document, error) in
if let document = document, document.exists {

var dataDescription = document.data()
print("Document data: (dataDescription)")

// Get values from data
self.FirstName = dataDescription?.removeValue(forKey: "firstname") as! String
self.LastName = dataDescription?.removeValue(forKey: "lastname") as! String

// Setup labels
self.namesLabel.text = "(self.FirstName) (self.LastName)"
self.passwordLabel.text = self.password
self.emailLabel.text = self.email

} else {

print("Document does not exist")
}
}
}
}

最新更新