首页 > 解决方案 > 在 Swift 中,如何在由结构对象数组组成的字典中进行搜索?

问题描述

我有一个结构:

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

以及由 AlimentObjet 组成的数组:

   var filteredData: [AlimentObject]!

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

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()
    }
}

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

if aliment.nomAliment.lowercased().contains(searchText.lowercased) {

标签: swiftuitableviewfilteruisearchbar

解决方案


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

简单地说,解决方案是:

if aliment.nomAliment.lowercased().contains(searchText.lowercased()) {

推荐阅读