Swiftui 如何在ForEach元素中有条件地选择项?
在SwiftUI中,我只想显示最喜欢的项目,我正试图通过ForEach元素中的if语句来实现这一点。参见代码:Swiftui 如何在ForEach元素中有条件地选择项?,swiftui,Swiftui,在SwiftUI中,我只想显示最喜欢的项目,我正试图通过ForEach元素中的if语句来实现这一点。参见代码: var body: some View { NavigationView { List { Toggle(isOn: $showFavoritesOnly) { Text("Favorites only") } ForEach(self.buildi
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语句来修复它。我记得我在苹果的一个例子中见过“if”方法。当然,将其放置在视图模型中会更好,甚至更好。可能是
ForEach
请求else
部分,因为如果条件不匹配,它不能返回nil视图。只是一个建议,我不确定!