过滤部分完全匹配的数组?

时间:2016-09-03 17:35:10

标签: ios arrays swift uisearchbar

我基本上希望完全匹配几乎任何搜索处理过滤的方式。

我到目前为止看到的每个搜索过滤指南都提供了

let lower = searchBar.text!.lowercaseString

filteredInterestArray = interestsArray.filter({$0.title.rangeOfString(lower) != nil})

基本上给出了类似的东西:

[“Cat”,“Rat”,“Bat”,“Atlas”]

如果你输入“at”,每个人都会出现,当真正只有Altas出现时。此外,如果你输入“stla”,atlas会出现,这显然是非常不直观的。

如何完成正确的过滤?

2 个答案:

答案 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