【发布时间】:2021-06-16 02:20:04
【问题描述】:
Firebase 我试图在我的 SwiftUI 视图中显示从 Firestore 获取的数据,但我遇到了问题。我从 Firebase 中提取数据没有问题。但我无法按我的意愿显示数据。我使用 MVVM 架构。
我的模型是这样的:
struct UserProfileModel: Identifiable {
@DocumentID var id : String?
var username : String
var uidFromFirebase : String
var firstName : String
var lastName : String
var email : String
}
视图模型:
class UserProfileViewModel: ObservableObject {
@Published var user : [UserProfileModel] = []
private var db = Firestore.firestore()
func data(){
db.collection("Users").whereField("uuidFromFirebase", isEqualTo: Auth.auth().currentUser!.uid).addSnapshotListener { (snapshot, error) in
guard let documents = snapshot?.documents else {
print("No Documents")
return
}
self.user = documents.compactMap { queryDocumentSnapshot -> UserProfileModel? in
return try? queryDocumentSnapshot.data(as: UserProfileModel.self)
}
}
}
}
查看:
struct MainView: View {
@ObservedObject private var viewModel = UserProfileViewModel()
var body: some View { // -> Error: The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
VStack{
Text(viewModel.user.username) // -> I want to do this but XCode is giving an error.
// This works but I don't want to do it this way.
List(viewModel.user) { user in
VStack{
Text(user.username)
Text(user.firstName)
Text(user.lastName)
Text(user.email)
Text(user.uidFromFirebase)
}
}
}
}
}
在我观看和阅读的标题为“SwiftUI fetch data from Firebase”的视频和文章中,我一直在 List 和 ForEach 上进行叙述。但我想在任何地方使用数据。我和你分享了我所有的代码。我想了解如何做到这一点。
【问题讨论】:
-
你遇到什么样的错误?
-
我添加了上面的错误。
标签: swift xcode firebase mvvm swiftui