我一直在搜索几个小时,看不到任何解决方案...我正在使用键入UISearchBar的文本过滤一组自定义对象,以更改下面的tableview中的数据。 经过一些调试后,ive pin指出了我的麻烦来源:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
var temp = "c"
FilterResults = SearchResults.filter {
return $0.Username.rangeOfString(temp) != nil
}
}
这是我的麻烦:如果我使用了如上所述明确定义的临时值,其中temp =" c",它很乐意匹配其中包含c的所有用户名!问题出现时,我使用变量searchText而不是使用temp,在这种情况下它永远不会与任何东西匹配!我检查并且searchText不为null,实际上我在测试中打印出了searchText,它打印出一个普通的字符串(根据搜索栏中输入的内容),但出于某些疯狂的原因,如果我在里面使用searchText变量。 rangeOfString方法,它总是返回false!这是为什么?我也使用过searchBar.text,它给了我同样的麻烦......我完全迷失了,感到沮丧。任何帮助将不胜感激!
答案 0 :(得分:0)
如果有效,请尝试此操作。
var searchList = [String]()
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchText!)
let array = (searchList as NSArray).filteredArrayUsingPredicate(searchPredicate) as! [String]
答案 1 :(得分:0)
原来是因为我没有意识到rangeOfString搜索区分大小写!