我很抱歉这个头衔。我有一个collectionView填充了一个类型为(AnyObject)的对象数组。我正在尝试添加搜索功能。我找到了一个教程,但在教程中它只是一个字符串数组。我希望搜索栏基于用户名进行搜索。除了这个功能,我得到了一切:
func filterContentForSearchText(searchText:String) {
self.friendsArrayForSearchResult = self.friendsArray.filter() {
guard let type = ($0 as AnyObject)["username"] as? String else {
return false
}
return type.rangeOfString("username") != nil
}
}
基本上,如果用户正在搜索,则使用self.friendsArrayForSearchResult填充集合视图,如果用户未搜索,则使用self.friendsArray填充。
好的,所以我得到了它:
self.usersArrayForSearchResult = self.usersArray.filter() {
if let pos = ($0["username"] as! String).lowercaseString.rangeOfString(searchText.lowercaseString) {
return (pos.startIndex == ($0["username"] as! String).startIndex)
}
return false
}
但唯一的问题是我希望它能够显示包含用户搜索内容的用户。因此,如果他们的名字是fred并且你输入ed那么fred就会出现......这可能是使用这个函数还是我必须做一堆其他的东西?
好的,所以在整夜尝试弄明白之后......显然这就是我需要做的一切。
self.friendsArrayForSearchResult = self.friendsArray.filter() {
if ($0["username"] as! String).lowercaseString.containsString(searchText.lowercaseString) {
return true
}
return false
}