搜索栏不一致错误(Swift)?

Posted

技术标签:

【中文标题】搜索栏不一致错误(Swift)?【英文标题】:Search Bar Inconsistency Error (Swift)? 【发布时间】:2016-08-02 17:24:17 【问题描述】:

我正在尝试在我的表格视图上方的视图中连接一个搜索栏:

//Outlet for the table search bar/controller
@IBOutlet var searchBar: UISearchBar!
var searchController =  UISearchController(searchResultsController: nil)
var searchBar_optional = false

//Function for when the search button is triggered
@IBAction func searchButtonPressed(sender: UIBarButtonItem) 

    if(searchBar_optional == false)
         tableView.contentInset = UIEdgeInsets(top: barView.bounds.size.height-30, left: 0.0, bottom: 0.0, right: 0.0)
        searchBar_optional = true
    
    else if (searchBar_optional)
         tableView.contentInset = UIEdgeInsets(top: barView.bounds.size.height-78, left: 0.0, bottom: 0.0, right: 0.0)
        searchBar_optional = false
    



var dataArray = [MainTableViewCell]()

var filteredArray = [MainTableViewCell]()

var shouldShowSearchResults = false


func filterContentForSearchText(searchText: String, scope: String = "All")
    filteredArray = dataArray.filter cell in
        if((cell.fileName.text?.containsString(searchText.lowercaseString)) == true)
            return true
        
        else if((cell.fileDescription.text?.containsString(searchText.lowercaseString)) == true)
            return true
        
        else if((cell.fileCategory.text?.containsString(searchText.lowercaseString)) == true)
            return true
        
        else if((cell.fileType.text?.containsString(searchText.lowercaseString)) == true)
            return true
        
        else
            return false
        

    
    tableView.reloadData()


func updateSearchResultsForSearchController(searchController: UISearchController) 
    filterContentForSearchText(searchBar.text!)


func configureSearchController() 
 searchController.searchResultsUpdater = self
 searchController.dimsBackgroundDuringPresentation = false
 definesPresentationContext = true


当按下搜索按钮时,它会向下移动视图,使搜索栏可见。但是,当我按下搜索栏时,会弹出此错误:

*** Assertion failure in -[UISearchResultsTableView 
dequeueReusableCellWithIdentifier:forIndexPath:],
/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-
3512.60.7/UITableView.m:6573
2016-08-02 13:13:05.001 References[22478:14561725] *** Terminating app due 
to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to
dequeue a cell with identifier MainTableCell - must register a nib or a 
class for the identifier or connect a prototype cell in a storyboard'

我的单元格的单元格标识符是 MainTableCell,这就是它在错误中显示的原因。知道发生了什么吗?

【问题讨论】:

你用 UITableView 注册你的 nib 文件了吗? @tek3 是的。表格视图工作正常,当我在搜索栏内单击时发生唯一错误 看看这个链接是否有帮助。 ***.com/questions/14207142/… 你能告诉我们与 tableView 相关的代码吗?也许我错了,但我的直觉仍然告诉我这是某些表格视图的问题。 我也更新了我的答案... 【参考方案1】:

您没有使用此标识符注册 tableViewCell。将MainTableCell 放在 Storyboard 中的单元格 id 或您为 tableView 注册单元格类的位置(如果您以编程方式进行)。

更新:

我认为这与从 tableView 中出列单元格有关。 我猜你有标准代码:

cell = tableView.dequeueReusableCellWithIdentifier(cellId, forIndexPath: indexPath)

请尝试将其替换为:

cell = self.tableView.dequeueReusableCellWithIdentifier(cellId, forIndexPath: indexPath)

【讨论】:

我确实注册了它。错误不在于表格视图,而是当我在搜索栏内单击时

以上是关于搜索栏不一致错误(Swift)?的主要内容,如果未能解决你的问题,请参考以下文章

OpenTok/TokBox 的 Swift 协议一致性错误

冗余一致性错误消息 Swift 2

swift playground / deinit 中的内存泄漏未一致调用

多种协议的 Swift 类一致性(XCode 7、iOS 9、Swift 2.1)

未检测到超类中声明的 Swift 协议一致性

使用 xcode 9.2 的情节提要中的不一致错误