【发布时间】:2023-01-19 00:25:36
【问题描述】:
我创建了一个数组结构来存放我在列表中使用的值。现在我希望能够搜索此列表,每次用户创建一个空格时,程序都应该将其视为两个不同的搜索词,这两个搜索词都应该满足。 我已经成功地创建了一个函数来获取搜索词,但我真的不知道如何通过所有搜索词过滤我的 stuctArray。
let searchWords = findAllSearchResutsRecursive(searchWord) //example ["A", "B", ,"C"]
let filteredArray = listArray.filter {
for word in searchWords {
$0.firstname!.capitalized.contains(word.capitalized) ||
$0.lastname!.capitalized.contains(word.capitalized) ||
$0.id!.capitalized.contains(word.capitalized) ||
$0.city!.capitalized.contains(word.capitalized)
}
}
澄清一下,如果 searchWords 是 ["A", "N"] 并且参与者之一(列表中的人)的名字是“Anna”,但没有其他匹配搜索我仍然想显示它。
或者,如果将 SearchWords 转换为一个集合并以某种方式同时过滤它们会更好。
【问题讨论】:
-
那么你的代码有什么问题?你得到什么错误?什么不起作用?
-
@burnsi 我用截图更新了问题,这样你就可以看到我的错误
-
过滤器的闭包需要为每个被过滤的元素返回一个布尔值。您的代码在过滤器内有一个 for 循环。 for 循环的主体不能不返回布尔值。您将需要重构您的代码。