没有结果时从过滤器中获取输出

Get output out of filter when there are no results

我想知道,有没有办法在没有结果的情况下得到filter的结果?

目前,作为解决方法,我有一个 ZStack 并将结果覆盖在 "No results" 消息之上。

但我想知道过滤器是否有条件?

if(array.count > 0) {
  ForEach(array.filter({...}) { item in
    // do things if found
    //           <-- check if no results here
  }
} else {
  Text("No results at all")
}

我知道这违背了过滤的想法,但我想我会检查一下以防我在所有搜索中遗漏了什么!

您需要检查 if 中的 filtered 数组是否为空:

let filteredArray = array.filter({...})
if !filteredArray.isEmpty {
    ForEach(filteredArray) { item in
        // do things if found
    }
} else {
    Text("No results at all")
}

嗯,已经回答了。但我只想再添加一项更改。与其使用 if 不如使用 guard 语句:

guard let filteredArray = array.filter({...}),
          !filteredArray.isEmpty else {
    Text("No results at all")
    return
}

ForEach(filteredArray) { item in
    // do things if found
}

您可以在此处阅读更多关于差异的信息: