나는 스튜디오의 배열을 가지고 있습니다. 각 스튜디오에는 studioName이라는 속성이 있습니다.NSPredicate로 속성에있는 객체의 필터 배열
사용자가 검색 필드에 적용한 studioName을 기반으로 스튜디오를 필터링하려면 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"를 추가하려고했지만 내 응용 프로그램이 충돌합니다.
Swift 2를 사용하고있는 것처럼 보이므로 질문에 적절하게 태그를 달아야합니다 (Xcode를 APP Store에서 사용 가능한 최신 Xcode로 업데이트하는 것이 좋습니다). –
메모 :'searchText == nil'을 사용하여 nil 확인 , unwrapping ('searchText!')은 정말 나쁜 습관이다 – Alexander