这是我的名单。。。
List {
ForEach(viewModel.flight.flightEvents, id: \.id) { flightEvent in
...
}
}
视图模型有这个。。。
@Published var flight: Flight
Flight
看起来像这样。。。
struct Flight: Identifiable {
let flightEvents: [FlightEvent]
let id = UUID()
}
FlightEvent
...
struct FlightEvent: Identifiable {
let id = UUID()
let dateComponents: DateComponents
}
此代码导致以下项目
flightEvents
数组立即绑定到列表。
但是,如果我将绑定到列表的集合更改为。。。
viewModel.flight.flightEvents.filter { $0.dateComponents.date! <= Date() }
…那么这些项目就永远不会出现在列表中——过滤器从一开始就对每个项目都是假的。我有一个解决方法,当用户刷新并绑定此数组时,我将过滤后的航班事件复制到另一个数组中。
有没有一种方法可以让SwiftUI连续计算过滤器表达式?我认为它没有约束力,因为基础收藏没有改变。