如何在 ForEach 元素中有条件地选择项目?



在 SwiftUI 中,我只想显示最喜欢的项目,我正在尝试使用 ForEach-元素中的 if 语句来做到这一点。请参阅代码:

var body: some View {
NavigationView {
List {
Toggle(isOn: $showFavoritesOnly) {
Text("Favorites only")
}
ForEach(self.buildings, id: .self) { building in
if(!self.showFavoritesOnly || building.favourite) {
Text("Blah")
}
}
}
}
}

但是,我收到"无法推断复杂的闭包返回类型;添加显式类型以消除歧义"错误。

如何在 ForEach 元素中有条件地选择项目?

使用过滤器是一种可行的解决方案

var body: some View {
NavigationView {
List {
Toggle(isOn: $showFavoritesOnly) {
Text("Favorites only")
}
ForEach(self.buildings.filter({b in self.showFavoritesOnly || b.favourite}), id: .self) { building in
Text("Blah")
}
}
}

不过,我想知道如何使用 if 语句修复它

最新更新