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



我想知道,当没有结果时,是否有办法获得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中array为空:

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
}

你可以在这里阅读更多关于它们的区别:

  • Swift: guard let vs if let

最新更新