使用Searchbar时调用中的额外参数

时间:2018-09-16 18:47:43

标签: ios swift uisearchbar

当我尝试在我的应用中实现搜索栏时,出现错误“通话中的额外参数”。

我还阅读了其他问题,包括:

Swift - Extra Argument in call

Swift 4 “Extra argument in call” Rxswift

还有其他人却没有成功。

这是我的代码:

extension ViewController: UISearchBarDelegate {

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {

    todoItems = todoItems.filter("title CONTAINS[cd] %@", searchBar.text!).sorted(byKeyPath: "dateCreated", ascending: true) // Getting Error on this line

    tableView.reloadData()

}


func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    if searchBar.text?.count == 0 {
        loadItems()

        DispatchQueue.main.async {
            searchBar.resignFirstResponder()
        }

    }
}

}

1 个答案:

答案 0 :(得分:1)

您正在混合使用NSPredicatefilter语法以及NSSortDescriptorsorted语法。这行不通。

假设todoItems是自定义结构或类的数组,本机Swift方式为

todoItems = todoItems.filter{ $0.title.range(of: searchBar.text!, options: [.caseInsensitive, .diacriticInsensitive]) != nil}
                     .sorted{ $0.dateCreated < $1.dateCreated}

注意:考虑到您将使用过滤后的数组覆盖包含所有项目的数组...