在 Swift 中,如何在由 struct 对象数组组成的字典中进行搜索?

Wah*_*hib 0 filter uitableview uisearchbar swift

我有一个结构:

struct AlimentObject {
        var id = UUID().uuidString
        var nomAliment = "Nouvel aliment"
        var poids : Float = 100
        var calories : Float = 0
}
Run Code Online (Sandbox Code Playgroud)

以及由 AlimentObjet 组成的数组:

   var filteredData: [AlimentObject]!
Run Code Online (Sandbox Code Playgroud)

我有一个表格视图的搜索栏,但我不知道如何搜索“nomAliment”中的字符,这里是搜索栏的代码:

extension AjoutAlimentController: UISearchBarDelegate {
    
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        filteredData = []
        for aliment in data {
            if aliment.nomAliment.lowercased().contains(searchText.lowercased) {
                filteredData.append(aliment)
            }
        }
        self.tableView.reloadData()
    }
}
Run Code Online (Sandbox Code Playgroud)

错误说:类型 '() -> String' 不能符合 'StringProtocol'; 只有结构/枚举/类类型可以符合它在行中的协议:

if aliment.nomAliment.lowercased().contains(searchText.lowercased) {
Run Code Online (Sandbox Code Playgroud)

Jam*_*e A 5

您在()第二个 之后丢失了lowercased,因此不是执行lowercased函数并将返回的字符串传递给contains(),而是传入一个类型为'() -> String' 的函数。

解决方法很简单,就是:

if aliment.nomAliment.lowercased().contains(searchText.lowercased()) {
Run Code Online (Sandbox Code Playgroud)