首页 > 解决方案 > 如何允许用户根据两个条件进行搜索

问题描述

我正在尝试实现一个搜索栏,用户可以在其中根据姓名或职业搜索某人。我在下面编写了函数,但应用程序在使用 OR 运算符的 return 语句处崩溃。是否有适当的方法来编写此函数以允许两种可能性 - 根据输入一个人的姓名或他们的职业来获得结果?注意:我使用 Firebase 来存储用户信息;姓名和职业有各自独立的字段和对应的值。

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
            
    if searchText.isEmpty || searchText == " " {
        inSearchMode = false
        tableView.reloadData()
    } else {
        inSearchMode = true
        filteredUsers = users.filter({ (user) -> Bool in
            return user.name.contains(searchText) || user.occupation.contains(searchText)
        })
        tableView.reloadData()
    }
}

标签: iosswiftfirebaseuisearchbar

解决方案


尝试像这样编辑您的代码:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) 
{
    if searchText.isEmpty || searchText == " " {
        inSearchMode = false
    } else {
        inSearchMode = true
        filteredUsers = users.filter({ (user) -> Bool in
            return (user.name?.contains(searchText) ?? true) || (user.occupation?.contains(searchText) ?? true)
        })
    }

    tableView.reloadData()
}

推荐阅读