gpt4 book ai didi

ios - 在 SwiftUI 中使用 For 循环获取 Firebase 数据

转载 作者:行者123 更新时间:2023-12-01 19:32:12 25 4
gpt4 key购买 nike

我正在尝试使用 for 循环获取特定的 Firebase 数据,但它给了我这个错误:“'ListenerRegistration' 不能用作符合协议(protocol) 'View' 的类型,因为 'View' 具有静态要求”。如果调用 ZStack{}.onAppear() 函数,则代码运行。我该如何改变呢?

ForEach(self.allFriends, id: \.id) { friend in
Firestore.firestore().collection(friend.email+"-TodayCal").addSnapshotListener { querySnapshot, error in
guard let documents = querySnapshot?.documents else {
print("error fetching: \(error!)")
return
}

let name = documents.map { $0["nameOfFriend"] }
print(name)
self.allFriendsCal.removeAll()
for i in 0..<name.count {
self.allFriendsCal.append(AllFriendsCal(id: UUID(uuidString: documents[i].documentID) ?? UUID(), name: name[i] as? String ?? "Failed to get Name"))
}
}
}

最佳答案

ForEachView类型,接受其他View s 在函数生成器中。你可以通过调用 onAppear() 中的 Firebase 集合来实现你想要的。或您已经拥有的其他任何地方allFriends填充并遍历结果,如下所示:

.onAppear {
for friend in self.allFriends {
Firestore.firestore().collection(friend.email+"-TodayCal").addSnapshotListener { querySnapshot, error in
guard let documents = querySnapshot?.documents else {
print("error fetching: \(error!)")
return
}

let name = documents.map { $0["nameOfFriend"] }
print(name)
self.allFriendsCal.removeAll()
for i in 0..<name.count {
self.allFriendsCal.append(AllFriendsCal(id: UUID(uuidString: documents[i].documentID) ?? UUID(), name: name[i] as? String ?? "Failed to get Name"))
}
}
}
}

关于ios - 在 SwiftUI 中使用 For 循环获取 Firebase 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61908645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com