搜索整个数组Swift

问题描述 投票:0回答:2

如何实现对所有三个参数的搜索?在搜索organisationName时,一切都有效吗?非常感谢你!

func filterTableView(text:String) {


    dataArray = initialDataAry.filter({ (mod) -> Bool in

            return mod.organisationName
                .lowercased().contains(text.lowercased())
        })
        self.tableView.reloadData()


    if dataArray.count != 0 {

        dataArray = initialDataAry.filter({ (mod) -> Bool in

            return mod.tel1Org

                .lowercased().contains(text.lowercased())
        })
        self.tableView.reloadData()

    }

    if dataArray.count != 0 {

        dataArray = initialDataAry.filter({ (mod) -> Bool in
            return mod.tel2Org
                .lowercased().contains(text.lowercased())
        })
        self.tableView.reloadData()

    }

}
arrays swift search filter
2个回答
4
投票

检查一个过滤器内的所有三个字段:

func filterTableView(text:String) {
    let search = text.lowercased()
    dataArray = initialDataAry.filter({ (mod) -> Bool in
        return mod.organisationName.lowercased().contains(search) ||
               mod.tel1Org.lowercased().contains(search) ||
               mod.tel2Org.lowercased().contains(search)

    })

    self.tableView.reloadData()
}

2
投票

您可以一次对所有字符串使用OR比较。这与添加所有字符串并比较结果字符串相同。

dataArray = initialDataAry.filter({ (mod) -> Bool in

            let searchString = mod.organisationName + mod.tel1Org + mod.tel2Org

            return searchString
                .lowercased().contains(text.lowercased())

        })
        self.tableView.reloadData()
© www.soinside.com 2019 - 2024. All rights reserved.