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

Swiftui 如何在ForEach元素中有条件地选择项?,swiftui,Swiftui,在SwiftUI中,我只想显示最喜欢的项目,我正试图通过ForEach元素中的if语句来实现这一点。参见代码: var body: some View { NavigationView { List { Toggle(isOn: $showFavoritesOnly) { Text("Favorites only") } ForEach(self.buildi

在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语句来修复它。我记得我在苹果的一个例子中见过“if”方法。当然,将其放置在视图模型中会更好,甚至更好。可能是
ForEach
请求
else
部分,因为如果条件不匹配,它不能返回nil
视图。只是一个建议,我不确定!