我有一个Studio数组,每个Studio都有一个名为studioName的属性。
我需要我的搜索框根据用户输入的studioName来过滤Studio。
这是我的当前代码:
我需要我的搜索框根据用户输入的studioName来过滤Studio。
这是我的当前代码:
var studios = [Studio]()
var filteredStudios = [Studio]()
var studiosToDisplay = [Studio]()
func updateSearchResultsForSearchController(searchController: UISearchController) {
let searchText = searchController.searchBar.text
print("SEARCH TEXT: \(searchText)")
if searchText == nil || searchText!.isEmpty {
studiosToDisplay = studios
self.resultTableView.reloadData()
NSNotificationCenter.defaultCenter().postNotificationName("showResultsBeforeSearchingNotification", object: nil) //Calls SearchVC
} else {
studiosToDisplay.removeAll()
let searchPredicate = NSPredicate(format: "studioName CONTAINS[c] %@", searchText!)
let array = (self.studios as NSArray).filteredArrayUsingPredicate(searchPredicate)
studiosToDisplay = array as! [Studio]
self.resultTableView.reloadData()
}
}
现在它不能很好地工作。它可以过滤,但无论我在搜索框中输入什么,我都得到相同的Studio。
我想我需要让谓词知道每次都要查看数组中的单个对象。但我就是想不出办法。 我尝试在格式中添加“ANY”,但那样会崩溃我的应用程序。
searchText == nil
进行空值检查,然后强制解包 (searchText!
) 是非常不好的编程实践。 - Alexander