私はスタジオの配列を持っています。各スタジオには、studioNameというプロパティがあります。NSPredicateでプロパティにあるオブジェクトのフィルタ配列
スタジオをフィルタリングするにはsearchfieldが必要です。スタジオ名に基づいて、ユーザーが検索フィールドに適用します。
は、ここに私の現在のコードです:それはちょうどワイトを働いていない
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」を追加しようとしましたが、それは私のアプリをクラッシュさせます。
スウィフト2を使用していると思われるので、適切に質問にタグを付ける必要があります(私は、あなたのXcodeをAPPストアで入手できる最新のXcodeにアップデートすることをお勧めします) –
サイドノートで: 'searchText == nil' ( 'searchText!')は本当に悪い練習です – Alexander