Я создал searchController, и поэтому я пытаюсь сделать его фильтром в соответствии с текстом в UISearchController. Я создал пользовательский объект, как показано ниже. Я попытался с помощью NSPredicate, но продолжаю получать:Фильтр по массиву объектов searchController
cannot convert value of type NSPredicate to expected type @noescape (organization) throws...
class Organization: Object {
var id: Int = 0
var name: String = ""
var shortName: String = ""
var image: NSData = NSData()
var pinImage: NSData = NSData()
let locations = List<Location>()
}
Тогда у меня есть массив называется sortedLocations
в моем ViewController, который содержит ряд Organization
объектов.
То, что я пытался до сих пор:
func updateSearchResultsForSearchController(searchController: UISearchController)
{
filteredTableData.removeAll(keepCapacity: false)
let searchPredicate = NSPredicate(format: "SELF.name CONTAINS[c] %@", searchController.searchBar.text!)
let array = sortedLocations.filter(searchPredicate)
filteredTableData = array as! [Organization]
self.tableView.reloadData()
}
Хмм, но 'отфильтрованныйTableData', похоже, ничего не содержит, когда я пишу что-то, что содержится в имени объекта? Нужно ли добавлять что-нибудь? –
@PeterPik: Я только дважды проверил его с помощью небольшой тестовой программы, и он работал, как ожидалось. –
, но разве я ничего не добавляю? –