我有一个搜索,它下载一个
JSON文件并在TableView中显示结果.如果用户搜索某些内容并获取结果列表,则搜索返回0结果的其他内容.第一组结果仍然在TableView中.我想在每次新搜索开始时清除TableView以防止发生这种情况.我已经尝试将数据源设置为nil并重新加载TableView但它无法正常工作.这就是我所拥有的:
- var searchResults : [[String : AnyObject]]? = nil
- func searchBarSearchButtonClicked(searchBar: UISearchBar) {
- print("DEBUG: searchBarSearchButtonClicked")
- if searchBar.text > "" {
- //--- This isn't working ---
- searchResults = nil
- tableView.reloadData()
- //--------------------------
- activityIndicator.startAnimating()
- dbSearcher.startSearch(searchBar.text!) { (results) -> () in
- self.searchResults = results
- self.activityIndicator.stopAnimating()
- self.tableView.reloadData()
- }
- searchBar.endEditing(true)
- }
- }
- override func tableView(tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
- if searchResults != nil {
- print("DEBUG: Result count \(searchResults!.count)")
- return searchResults!.count
- } else {
- print("DEBUG: Result count 0") //I don't see this other than when the ViewController first loads
- return 0
- }
- }
- override func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("searchResult")!
- cell.textLabel?.text = searchResults![indexPath.row]["Title"] as? String
- cell.detailTextLabel?.text = searchResults![indexPath.row]["Year"] as? String
- //Display cover
- let imageURL = searchResults![indexPath.row]["Poster"] as? String
- if imageURL != "N/A" {
- if let cover : UIImage = searchResults![indexPath.row]["Image"] as? UIImage {
- cell.imageView?.image = cover
- } else {
- //Use default cover while the correct image downloads
- //cell.imageView?.image = DEFAULT_COVER
- downloadCover(imageURL!,tableViewRow: indexPath.row)
- }
- } else {
- //Use default cover
- //cell.imageView?.image = DEFAULT_COVER
- }
- return cell
- }
不要使用可选类型.
声明一个非可选的空数组.
声明一个非可选的空数组.
- var searchResults : [[String : Any]]()
那么numberOfRowsInSection就可以了
- override func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
- return searchResults.count
- }
要清除表视图写入
- searchResults.removeAll()
- tableView.reloadData()
没有打包,没有检查零,没有问题.