我基本上希望完全匹配几乎任何搜索处理过滤的方式。
我到目前为止看到的每个搜索过滤指南都提供了
let lower = searchBar.text!.lowercaseString
filteredInterestArray = interestsArray.filter({$0.title.rangeOfString(lower) != nil})
基本上给出了类似的东西:
[“Cat”,“Rat”,“Bat”,“Atlas”]
如果你输入“at”,每个人都会出现,当真正只有Altas出现时。此外,如果你输入“stla”,atlas会出现,这显然是非常不直观的。
如何完成正确的过滤?
答案 0 :(得分:1)
为实现此目的,您可以使用hasPrefix(_:)方法代替rangeOfString
方法。
使用:
let lower = searchBar.text!.lowercaseString
filteredInterestArray = interestsArray.filter({$0.title.hasPrefix(lower)})
答案 1 :(得分:1)
NSString
提供hasPrefix:以确定字符串是否以另一个字符串开头。
OP并不指示interestsArray
中的字符串是否以小写字母开头,但如果它们不是,则在检查之前您必须force them to lower。