【问题标题】:Search the entire array Swift搜索整个数组 Swift
【发布时间】:2018-08-09 03:39:07
【问题描述】:

如何实现对所有三个参数的搜索?在搜索 organizationName 时,一切都像所有人一样工作吗?非常感谢!

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


    【解决方案1】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        • 2015-04-16
        相关资源
        最近更新 更多