我有一组工作室。每个工作室都有一个名为studioName的属性。使用NSPredicate过滤属性上的对象数组
我需要我的searchfield根据用户对搜索字段应用的studioName过滤工作室。
这里是我当前的代码:
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()
}
}
它只是不工作怀特,现在..它过滤,但我结束了同一个工作室,每次离开,不管我放在searchfield。
我想我需要让谓词知道,它必须每次都查看数组中的单个对象。但我不知道如何。 我试图在格式中添加“ANY”,但这会导致我的应用崩溃。
你应该正确地标记你的问题,因为它似乎你正在使用Swift 2(我建议更新你的Xcode到APP商店提供的最新Xcode) –
附注:使用'searchText == nil'检查nil ,然后强制解包('searchText!')是非常糟糕的练习 – Alexander