当前位置: 首页 > 知识库问答 >
问题:

搜索栏textDidChange错误

郜谦
2023-03-14

我正在尝试为tableView实现一个搜索栏,但在我的textDidChange方法中收到错误“…二进制运算符“==”不能应用于“Place”和“String”类型的操作数。tableView是从Firebase数据库“placeList”数组填充的。不确定错误源来自何处。提前感谢您的帮助!

lazy var searchBar:UISearchBar = UISearchBar()

var placeList = [Place]()
var placesDictionary = [String: Place]()

var isSearching = false
var filteredData = [Place]()

override func viewDidLoad() {
    super.viewDidLoad()

    searchBar.searchBarStyle = UISearchBarStyle.prominent
    searchBar.placeholder = " Search Places..."
    searchBar.sizeToFit()
    searchBar.isTranslucent = false
    searchBar.backgroundImage = UIImage()
    searchBar.delegate = self
    searchBar.returnKeyType = UIReturnKeyType.done
    navigationItem.titleView = searchBar

    tableView.allowsMultipleSelectionDuringEditing = true

}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = UITableViewCell(style: .subtitle, reuseIdentifier: cellId)

    if isSearching {
        cell.textLabel?.text = filteredData[indexPath.row].place
    } else {

    cell.textLabel?.text = placeList[indexPath.row].place

    }
    return cell
}

Func搜索栏(_搜索栏:UISearchBar,文本更改搜索文本:字符串){

    if searchBar.text == nil || searchBar.text == "" {
        isSearching = false
        view.endEditing(true)
        tableView.reloadData()
    } else {
        isSearching = true
        // error in below line of code...
        filteredData = placeList.filter({$0.place == searchBar.text})
        tableView.reloadData()
    }

}

共有1个答案

张嘉
2023-03-14

您的属性是一组对象。在数组上调用函数时({code>placeList.filter({$0==搜索栏.text!}) ),您所说的是“过滤placeList,其中Place对象等于searchBar.text”。放置对象不是字符串,不能比较两种不同的类型。我不熟悉您的数据模型,也不熟悉您的Place类,但您可能在Place类中有某种类型的字符串属性,可以用来比较?例如,假设Place有一个类型为String的名为id的属性,则可以通过如下比较进行筛选:filteredData=placeList。筛选器({$0.id==搜索栏.文本!}) -请注意添加的0美元。id

您只能将String与String进行比较

 类似资料:
  • 苹果风格的搜索栏,带有一个自动隐藏的取消按钮。适合作为主搜索固定在页面顶部,搜索栏只是一个CSS组件,不提供任何JS功能,你也可以单独使用 .search-input。 <header class="bar bar-nav">   <h1 class='title'>搜索栏</h1> </header> <div class="bar bar-header-secondary">   <d

  • 搜索栏允许用户在列表元素中搜索,或者它可以用来作为UI组件,放到你自己的搜索实现中。 搜索栏布局 搜索栏应该放到“.page”内,“.page-content”前: <div class="page"> <!-- Search bar --> <form class="searchbar"> <div class="searchbar-input"> <inpu

  • <div class="ui-searchbar-wrap ui-border-b"> <div class="ui-searchbar ui-border-radius"> <i class="ui-icon-search"></i> <div class="ui-searchbar-text">搜索号码(2-10位)</div>

  • search这部分是利用小程序input组件实现,在下面的示例中主要使用了focus和bindinput两个属性,由于mpvue从底层支持 Vue.js 语法和构建工具体系,因此可以用vue的v-model进行双向数据绑定,示例如下: <template> <div class="page"> <div class="page__hd"> <div class="page_

  • 描述 (Description) 框架7允许使用searchbar类搜索元素。 搜索栏参数 S.No 参数和描述 类型 默认 1 searchList 它搜索列表的CSS选择器或HTML元素。 字符串或HTML元素 - 2 searchIn 您可以搜索CSS选择器的列表视图元素,也可以通过传递.item-title , .item-text类来搜索元素。 string '.item-title'

  • 我正在为iOS 7更新我的应用程序,我正在调整我的所有视图,以适应新的透明状态栏(我的应用程序仍将使用不透明的导航栏)。 在每个视图中调整状态栏都相对容易,除了我的一个视图控制器中的UISearchBar连接到UISearchDisplayController时遇到的一个主要问题。 搜索栏似乎显示正常,如下所示: 问题是,一旦我开始搜索,导航栏就会消失(应该如此),但其他所有内容也会向上移动以重叠