Я пытаюсь настроить searchBar с помощью TableView, чтобы я мог фильтровать через представление таблицы, я пытаюсь сделать это программно. Хотя мой код продолжает отправлять обратно ошибку: unexpectedly found nil while unwrapping an Optional value
. Ошибка находится внутри func numberOfRowsInSection
, я ее отметил. это связано с SearchDisplayController, он говорит, что это ноль, я думаю? Код:Поиск Дисплей Контроллер, вызывающий сбой
struct UserMatches {
var finalMatchesName : String
var finalMatchesAge : Int
var finalMatchesLocation : PFGeoPoint
var finalMatchesImage : NSData
}
class Matches: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate, UISearchDisplayDelegate {
var tableView = UITableView()
var searchBar = UISearchBar()
var userMatches = [UserMatches]()
var filterUsers = [UserMatches]()
override func viewDidLoad() {
super.viewDidLoad()
createTableView()
}
func filterContentForSearchText(searchText: String) {
self.filterUsers = self.userMatches.filter({(user1: UserMatches) -> Bool in
let stringMatch = user1.finalMatchesName.rangeOfString(searchText)
return (stringMatch != nil)
})
}
func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchString searchString: String!) -> Bool {
self.filterContentForSearchText(searchString)
return true
}
func createTableView() {
tableView.sizeToFit()
tableView.dataSource = self
tableView.delegate = self
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
searchBar.sizeToFit()
searchBar.delegate = self
searchBar.showsScopeBar = true
searchBar.searchBarStyle = UISearchBarStyle.Minimal
searchBar.showsCancelButton = true
searchBar.returnKeyType = UIReturnKeyType.Search
tableView.tableHeaderView = searchBar
var searchDispCont = UISearchDisplayController(searchBar: searchBar, contentsController: nil)
searchDispCont.delegate = self;
searchDispCont.searchResultsDataSource = self;
searchDispCont.searchResultsDelegate = self;
self.view.addSubview(tableView)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView == self.searchDisplayController!.searchResultsTableView { //fatal error: unexpectedly found nil while unwrapping an Optional value
return self.filterUsers.count
} else {
return self.userMatches.count
}
}
}
Спасибо, но это все еще происходит с той же ошибкой? –
Любопытный. Документы указывают, что свойство 'searchDisplayController' установлено, когда инициализирован' UISearchDisplayController'. Конечно, если 'tableView (_: numberOfRowsInSection:)' вызывается _before_, вы создаете контроллер отображения поиска, вы все равно увидите крах, но я не могу быть уверен, что это происходит или нет ... кажется маловероятным что вы создаете его, прежде чем добавлять представление таблицы в качестве подзапроса. – Stuart
Было бы это связано с 'self.searchDisplayController !.searchResultsTableView', который ссылается на функцию, не так ли? Я выбрал этот код из других источников, поэтому, пытаясь понять, что происходит полностью ... –