Ios Swift 3.0搜索栏按字母(非单词)筛选

Ios Swift 3.0搜索栏按字母(非单词)筛选,ios,swift,tableview,uisearchbar,Ios,Swift,Tableview,Uisearchbar,我希望我的搜索栏按不区分大小写的字母过滤tableView。目前,我已经将其设置为按大小写敏感词进行过滤,我不知道如何通过搜索栏中使用的字母填充tableView func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { if newMessageSearchBar.text == nil || newMessageSearchBar.text == "" { isSear

我希望我的搜索栏按不区分大小写的字母过滤tableView。目前,我已经将其设置为按大小写敏感词进行过滤,我不知道如何通过搜索栏中使用的字母填充tableView

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

    if newMessageSearchBar.text == nil || newMessageSearchBar.text == "" {

        isSearching = false

        view.endEditing(true)

        messagesTableView.reloadData()

    } else {

        isSearching = true

        nameList = sortedUserNames.filter({$0 == searchBar.text})

        messagesTableView.reloadData()
    }
}

我的数据源是sortedUserNames,我将其设置为nameList。我不确定tableView是否仅在单词完成时刷新,或者筛选功能不起作用。

请使用
contains
,而不是equal comparing(仅在完全相等时返回true),使用小写使其不区分大小写

nameList = sortedUserNames.filter({$0.lowercased().contains(searchBar.text.lowercased())})

使用
contains
代替相等比较(仅在完全相等时返回true),小写使其不区分大小写

nameList = sortedUserNames.filter({$0.lowercased().contains(searchBar.text.lowercased())})

这取决于您选择的搜索方式,如果您希望表格包含提供的确切搜索字符串,则“==”将为您提供最佳服务,但如果您希望名称可能包含搜索字符串的任何字符/子字符串,则“包含”将是您的选择

nameList = sortedUserNames.filter({$0.lowercaseString == searchBar.text.lowercaseString})

这取决于您选择的搜索方式,如果您希望表格包含提供的确切搜索字符串,则“==”将为您提供最佳服务,但如果您希望名称可能包含搜索字符串的任何字符/子字符串,则“包含”将是您的选择

nameList = sortedUserNames.filter({$0.lowercaseString == searchBar.text.lowercaseString})

我试过这个,它实际上对我有效。当您稍后尝试搜索大写字母和小写字母时,将显示带有该特定字母的单词

  func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

    if searchWordsBar.text == nil || searchWordsBar.text == "" {

        isSearching = false
        view.endEditing(true)
        originalWordsTableView.reloadData()

    } else {
        isSearching = true
        filteredWords = originalWords.filter { originalWords in return originalWords.lowercased().contains(searchText.lowercased())
    }
         originalWordsTableView.reloadData()

}
}

我试过这个,它实际上对我有效。当您稍后尝试搜索大写字母和小写字母时,将显示带有该特定字母的单词

  func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

    if searchWordsBar.text == nil || searchWordsBar.text == "" {

        isSearching = false
        view.endEditing(true)
        originalWordsTableView.reloadData()

    } else {
        isSearching = true
        filteredWords = originalWords.filter { originalWords in return originalWords.lowercased().contains(searchText.lowercased())
    }
         originalWordsTableView.reloadData()

}
}