swiftui - iOS 15 上 SwiftUI 中的意外列表行为
问题描述
我通过调用 ViewModel 文件并在 onAppear() 中传递当前用户来填充 SwiftUI 应用程序中的列表。此过滤器从数据库中提取的结果仅显示与用户相关的结果。在我在设备上安装 iOS 15 之前,以下所有内容都运行良好。该代码在 iOS 14、iOS 15 和 iOS 14 设备上的 iOS 模拟器中按预期工作。设备上的 iOS 15 出现此问题。打印的消息如下。
ForEach<Array, String, NavigationLink<OfferRowView, ModifiedContent<OfferDetailView, _EnvironmentKeyWritingModifier>>>:ID 在集合中出现多次,这将给出未定义的结果!
该视图不会加载列表中的项目。我已经打印出来测试它们是否重复,而它们不是。
查看文件
struct OfferHistoryView: View {
let db = Firestore.firestore()
@EnvironmentObject var authSession: AuthSession
@EnvironmentObject var offerHistoryViewModel: OfferHistoryViewModel
var body: some View {
return VStack {
List {
ForEach(self.offerHistoryViewModel.offerRowViewModels, id: \.id) { offerRowViewModel in
NavigationLink(destination: OfferDetailView(offerDetailViewModel: OfferDetailViewModel(offer: offerRowViewModel.offer, listing: offerRowViewModel.listing ?? testListing1))
.environmentObject(authSession)
) {
OfferRowView(offerRowViewModel: offerRowViewModel)
}
} // ForEach
} // List
.navigationBarTitle("Offer History")
} // VStack
.onAppear(perform: {
self.offerHistoryViewModel.startCombine(currentUserUid: self.authSession.currentUserUid)
})
} // View
}
查看模型文件
class OfferHistoryViewModel: ObservableObject {
var offerRepository: OfferRepository
// Published Properties
@Published var offerRowViewModels = [OfferRowViewModel]()
// Combine Cancellable
private var cancellables = Set<AnyCancellable>()
// Intitalizer
init(offerRepository: OfferRepository) {
self.offerRepository = offerRepository
}
// Starting Combine - Filter results for offers created by the current user only.
func startCombine(currentUserUid: String) {
offerRepository
.$offers
.receive(on: RunLoop.main)
.map { offers in
offers
.filter { offer in
(currentUserUid != "" ? offer.userId == currentUserUid : false)
}
.map { offer in
OfferRowViewModel(offer: offer, listingRepository: ListingRepository())
}
}
.assign(to: \.offerRowViewModels, on: self)
.store(in: &cancellables)
}
}
任何帮助将不胜感激。
解决方案
推荐阅读
- ffmpeg - ffmpeg 从流中附加文件
- javascript - 我的 javascript 文件功能不起作用
- python - 找出 pandas df 中滚动函数的索引
- api - JWT 似乎不是 REST API 的安全解决方案
- c# - Quickbooks 桌面集成退出而不在不同的计算机上启动
- python - 我的直方图条未显示并被切断
- python - 如何解决指向 t 的 Python 语法错误打印?
- oracle - Oracle 12.2:如何让 SQL*Plus 或 SQL Developer 提示用户输入变量?
- python - 我想将此嵌套列表转换为一组
- javascript - Javascript 数字 0 显示为未定义