ios - 如何在 swift 3 中过滤 UISearchBar 中的数组模型

标签 ios swift uitableview uisearchbar

我有一个像这样的数组模型:

 class Assess_order_med_model
{
    var name:String!
    var id:String!
    init(name:String!,id:String!) {
     self.name = name
        self.id = id
    }
}

我想根据“id”过滤我的数组。为此我这样做。

 var filteredData = [Assess_order_med_model]()
    override func viewDidLoad() {
        super.viewDidLoad()
        table_View.dataSource = self
        table_View.delegate  = self
        searchBar.delegate = self
        searchBar.showsCancelButton = false
        self.table_View.allowsSelection = false
        let array_vale1 = Assess_order_med_model.init(name: "New York, NY", id: "1")
               self.array_model.append(array_vale1)
                filteredData = array_model

    }

现在我正在像这样过滤我的数组

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {

        filteredData = searchText.isEmpty ? array_model : array_model.filter({(dataString: String) -> Bool in
            // If dataItem matches the searchText, return true to include it

            return dataString.range(of: searchText, options: .caseInsensitive) != nil
        })

        table_View.reloadData()
    }

但它给我这样的错误:Assess_order_model 类型的值没有成员范围。 谁能帮我过滤时我做错了什么?

最佳答案

您的array_model 包含对象Assess_order_med_model,更改您的textDidChange searchText,如下所示,

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
    let searchString = searchText.trimWhiteSpace()
    if searchString != "", searchString.count > 0 {
        let filterData = array_model.filter {
            return $0.id?.range(of: searchString, options: .caseInsensitive) != nil
        }
    }
}

这是trimWhiteSpace的通用方法,

extension String {
    func trimWhiteSpace() -> String {
        let string = self.trimmingCharacters(in: .whitespacesAndNewlines)
        return string
    }
}

关于ios - 如何在 swift 3 中过滤 UISearchBar 中的数组模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49811051/

相关文章:

swift - 从 Firebase 下载数据到 Xcode UITableView

iOS:在 xml 解析完成之前创建 TableView

ios - 带有标题和图像的 UIButton

ios - 通过协议(protocol)传递到下一个 View Controller 后,数据返回为零

ios - 在 Swift 项目中将 ViewController 从 Objective-C 代码推送到 Swift

ios - 找不到目标 'Alamofire' 的模块 'x86_64-apple-ios-simulator'

ios - 在单元格中实现 Like 按钮 - Swift 逻辑/数据传递问题

objective-c - __attribute__ ((deprecated)) 不适用于 objective-c 协议(protocol)方法?

我的 View Controller 中的 iOS 7 视差效果

ios - SearchBar 的 UITextField 填充?