搜索整个数组Swift

时间:2018-03-01 05:56:04

标签: arrays swift search filter

如何实现对所有三个参数的搜索?在搜索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()

    }

}

2 个答案:

答案 0 :(得分: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()
}

答案 1 :(得分: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()