Swift 如何使用Firestore get请求获取特定字段数据?
我已在我的应用程序上成功设置Firebase Phone Auth 在我家,当用户登录时,我检索他的特定uid以创建一个名为他的uid的firestore文档,以添加有关该用户的更多信息。 我为每个用户添加一个“点”字段 我正在尝试获取特定的“点”字段值 这是我的Firestore的屏幕: 这是我的代码屏幕,上面有打印到控制台的内容: 有人能帮我解释一下解决办法吗?我已经知道,我们无法通过firestore get请求仅获取字段值,但无法找到存储“points”值以向用户显示该值的解决方案 非常感谢 如果需要,以下是我的代码:Swift 如何使用Firestore get请求获取特定字段数据?,swift,firebase,google-cloud-firestore,swiftui,Swift,Firebase,Google Cloud Firestore,Swiftui,我已在我的应用程序上成功设置Firebase Phone Auth 在我家,当用户登录时,我检索他的特定uid以创建一个名为他的uid的firestore文档,以添加有关该用户的更多信息。 我为每个用户添加一个“点”字段 我正在尝试获取特定的“点”字段值 这是我的Firestore的屏幕: 这是我的代码屏幕,上面有打印到控制台的内容: 有人能帮我解释一下解决办法吗?我已经知道,我们无法通过firestore get请求仅获取字段值,但无法找到存储“points”值以向用户显示该值的解决方案
import SwiftUI
import Firebase
func getUID() -> String {
let user = Auth.auth().currentUser
if let user = user {
return user.uid
}
return "Can't fetch user data."
}
struct HomeView: View {
let uid = getUID()
let db = Firestore.firestore()
var body: some View {
VStack {
Text("User id = \(uid)")
.font(.headline)
.onAppear {
self.db.collection("users").document(self.uid).setData([
"points" : 2
])
}
Button(action: {
let docRef = self.db.collection("users").document(self.uid)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let dataDescription = document.data()
print(dataDescription)
} else {
print("Document \(document) does not exist")
}
}
}) {
Text("See my points")
}
Button(action: {
try! Auth.auth().signOut()
UserDefaults.standard.set(false, forKey: "status")
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "statusChange"), object: nil)
}) {
Text("Logout")
}
}
}
}
struct HomeView_Previews: PreviewProvider {
static var previews: some View {
HomeView()
}
}
访问Firestore文档中的特定字段有两种方式:
data()。您可以这样读取属性:
let data=queryDocumentSnapshot.data()
将title=数据[“title”]设为?一串""
将author=数据[“author”]设为?一串""
让numberOfPages=数据[“pages”]作为?Int??0
let book=try?queryDocumentSnapshot.data(as:Book.self)
分别阅读有关这些和的更多信息
我建议将任何数据访问代码提取到视图模型或存储中。我链接的文章展示了如何做到这一点。这将使您的代码更易于阅读,更不容易出错,并且更易于维护。我正试图按照您的思路进行操作,但列表中始终显示相同的书籍。这正常吗?我循序渐进地学习了教程。请确保
图书
是可识别的,并且每个图书实例都有一个唯一的id
。在链接到的教程部分中,这是通过在创建书籍时生成UUID来实现的。在后续操作中,我们使用@DocumentID
将Firestore文档ID映射到该书的ID
属性。它们具有不同的ID,因为我直接在Firebase中创建了两本书。为了调试,我复制了教程中的所有代码,问题仍然存在。我会重新开始!