swift - 如何计算使用 Cloud Firebase 在 Swift UI 中选择一个选项的人数?
问题描述
我的 FirstView 中有 2 个选项。之后用户选择“好”或“坏”。然后用户从 SecondView 的pickerview 中选择他/她居住的城市和地区。我的目标是在 ThirdView 的用户区域中显示选择“好”的人数和选择“坏”的人数。我可以获取城市和地区名称并存储在数据库中,但我不知道如何创建一个逻辑来计算所选区域的人数。我的firebase方面如下...... 我希望ThirdView看起来像
struct Lokasyon: Identifiable, Codable {
var id : String
var cityName: String
var districtName: String
var okeyButton : Bool
}
class TakeViewModel: ObservableObject {
@Published var lokasyon = [Lokasyon]()
private var db = Firestore.firestore()
private var listenerRegistration: ListenerRegistration?
deinit {
unsubscribe()
}
func unsubscribe() {
if listenerRegistration != nil {
listenerRegistration?.remove()
listenerRegistration = nil
}
}
func subscribe() {
unsubscribe()
if listenerRegistration == nil {
listenerRegistration = db.collection("posts").addSnapshotListener { (querySnapshot, error) in
guard let documents = querySnapshot?.documents else {
print("No documents")
return
}
self.lokasyon = documents.compactMap { queryDocumentSnapshot in
return try? queryDocumentSnapshot.data(as: Lokasyon.self)
}
}
}
}
}
struct ThirdView: View {
@ObservedObject var something = TakeViewModel()
var body: some View {
VStack{
VStack(spacing: 25){
Text("How others feel in")
ForEach(something.lokasyon){i in
VStack{
Text(i.cityName)
Text(i.districtName)
}
}
HStack{
VStack{
Image("smile")
.resizable()
.aspectRatio(contentMode: .fit)
Text("587")
Text("Feeling Good")
}
VStack{
Image("sad")
.resizable()
.aspectRatio(contentMode: .fit)
Text("235")
Text("Feeling Bad")
}
}
}
}.onAppear(perform: self.something.subscribe)
}
}
我手写数字只是为了给出一个想法并展示我的最终视图。
解决方案
推荐阅读
- c++ - 不能将结构分配给向量的索引吗?
- twilio - 在房间里从拨号盘收集数字
- bash - 如果“特定”列的行匹配,则比较“特定”列的行并连接其他列
- c# - Selenium 问题关闭弹出窗口
- flutter - 覆盖 operator== 是否有助于避免重建?
- python - 如何在 Python 中结合以下理解?
- python - 如何在 docker(Azure Web App)中为 Python 导入 cv2?
- python - 在条件上接收 Python unindent 错误我认为缩进看起来正确
- node.js - 在 express 中,当满足条件时,如何路由到自定义错误模板?
- c# - 实现基于组的角色 ASP.NET MVC CORE