SwiftUI - 如果在 ForEach 循环中

标签 swift macos swiftui

我正在根据我之前获取的数组中的元素构建一个列表。

我正在获取所有实体......当用户在搜索栏中进行搜索时,我想过滤我的列表。我不是在做一个新的 FetchRequest,我只是想过滤我的对象。

这是我目前使用的代码:

List(selection: $selectedDocument)
{
    ForEach(self.documentItems, id: \.self) { document in
        HStack(spacing: 0)
        {
            if (self.checkSearchString(document: document))
            {
                ListRow(document: document).tag(document)
            }
    }

我有一个列表,然后是我的 ForEach 循环。在那个循环中,我想决定是否显示该元素。问题是,即使我不想显示元素,我的列表中仍然有一个小 View 。我知道 为什么 ,那是因为我还在渲染HStack() .
我基本上需要拖动HStack()在我的 If ,但这对我不起作用。我认为这是因为我需要在我的列表中呈现一个 View 。但是我怎样才能继续我的 ForEach无需渲染。

这就是我想要实现的目标,但它不起作用:
 List(selection: $selectedDocument)
 {
     ForEach(self.documentItems, id: \.self) { document in
         if (self.checkSearchString(document: document))
         {
             HStack(spacing: 0)
             {
                 ListRow(document: document).tag(document)
             }
         }

提前致谢!

最佳答案

在将数据传递给 ForEach 构造函数之前过滤数据。

ForEach(self.documentItems.filter {self.checkSearchString(document: $0)}, id: \.self) { document in
    HStack(spacing: 0)
        {
            ListRow(document: document).tag(document)
        }
}

关于SwiftUI - 如果在 ForEach 循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60866380/

相关文章:

ios - 如何在 Swift 3 的 Map Kit 中更改选定的图钉图像?

ios - SwiftUI 按钮比例宽度高度

swift - 访问全局函数内的环境变量 - SwiftUI + CoreData

ios - 如何将表格 View 单元格计数值分配给编程 UILabel?

swift - 何时使用设备以及何时使用 Metal 着色语言中的常量地址空间限定符?

ios - 如何使 UIAppearance 代理适用于以编程方式创建的 View ?

macos - lrzsz 在 mac os x 上不起作用

python - 检查 Homebrew 安装以安装 Python

c++ - dylib 析构函数不会被调用

list - SwiftUI:如何摆脱列表中的顶部和底部分隔符