【问题标题】:Swift UISearchbar how to search a property of a classSwift UISearchbar如何搜索类的属性
【发布时间】:2019-10-26 15:43:03
【问题描述】:

我正在尝试使用 swift 实现 UISearchBar,我能找到的所有示例都与搜索字符串数组有关。

使用一个随机示例,假设我有一个名为“Car”的类,其属性为“manufacturer”和“model”

我有一系列名为“汽车”的汽车

我想实现一个搜索栏,通过将字符串与 Cars 数组中的“制造商”属性进行比较来过滤结果。

到目前为止,我可以连接关于过滤结果数组、表格视图结果等的所有其他内容。我无法解决的问题是:

  filteredManufacturers = Cars.filter({ (text) -> Bool in
        let tmp: NSString = text as NSString
        let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)

返回 range.location != NSNotFound })

我的问题是我不知道如何仅引用类的属性。如果我输入:

filteredManufacturers = Cars.manufacturers.filter....

存在的问题是“汽车”和如果没有称为“制造商”的属性。我改变它。并尝试参考。类属性'Car.manufacturers'那么显然它没有全部。的实际汽车数据进行过滤。有没有人有什么建议。

我想一种方法是将所有制造商数据复制到一个数组中,我可以搜索这个,但我必须参考。用于引用其类的初始索引,以及。似乎受了很久的伤。

【问题讨论】:

    标签: swift class search uisearchbar


    【解决方案1】:

    首先,您的原始方法可以在不使用 Objective-C NSString 的情况下重写:

    filteredManufacturers = Cars.filter {
        $0.lowercased().contains(searchText.lowercased())
    }
    

    可以通过制造商进行搜索是一种非常相似的方式:

    filteredManufacturers = Cars.filter {
        $0.manufacturer.lowercased().contains(searchText.lowercased())
    }
    

    (假设在Car 中有一个名为manufacturer 类型为String 的实例属性)

    【讨论】:

    • 那是王牌,所以澄清一下,因为这对我来说是新的。 '$0' 是否相当于表示数组中的所有索引?
    • @samp17 $0 与原始代码中的 text 相同。不同之处在于你给它起了一个自定义名称“text”,我懒得理会:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多