我不知道如何正确创建第一个return
。它将像这样工作,但问题是searchtestarrayone
始终具有不同的长度,并且可能很大。几周前从Swift开始我的旅程,所以下面的代码中可能有一些愚蠢的事情,答案很明显,请原谅。
func updateSearchResults(for searchController: UISearchController){
if let searchText = searchController.searchBar.text, !searchText.isEmpty {
transformSearchResult()
filteredBusStopsArray = busStopsArray.filter { (busstop : BusStop) in
if !searchtestarrayone.isEmpty{
return busstop.stopName.lowercased().contains(searchtestarrayone[0]) || busstop.stopName.lowercased().contains(searchtestarrayone[1])
}
else{
return busstop.stopName.lowercased().contains(searchText.lowercased())
}
寻找一些技巧。最好的祝福。
最佳答案
如果要返回busstop.stopName
是否包含searchtestarrayone
的任何值,则可以使用contains.where
。
if !searchtestarrayone.isEmpty{
return searchTestArrayOne.contains(where: {busStop.stopName.lowercased().contains($0)})
}
如果
searchTestArrayOne
的任何元素包含在busStop.stopName
中,则返回true,否则返回false。一旦找到与闭包匹配的第一个元素,contains(where:)
也会提早退出,因此,如果没有匹配项,则仅遍历整个搜索数组。还请确保您遵守Swift命名约定,即函数名和变量名的lower-camelCase。