Swift UISearchbar 如何搜索 属性 的 class
Swift UISearchbar how to search a property of a class
我正在尝试使用 swift 实现 UISearchBar,我能找到的所有示例都与搜索字符串数组有关。
使用一个随机示例,假设我有一个名为 'Car' 的 class,其属性为 'manufacturer' 和 'model'
我有一系列汽车,名为 'Cars'
我想实现一个搜索栏,通过将字符串与 Cars 数组中的 'manufacturer'属性 进行比较来过滤结果。
到目前为止,我可以连接有关过滤结果数组、table 查看结果等的所有其他内容。我无法解决的问题是:
filteredManufacturers = Cars.filter({ (text) -> Bool in
let tmp: NSString = text as NSString
let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound
})
我遇到的问题是我不知道如何只引用 class 的 属性。如果我输入:
filteredManufacturers = Cars.manufacturers.filter....
问题是 'Cars' 和 if 没有 属性 调用 'manufacturers'。我改变它。并尝试参考。 class 属性 'Car.manufacturers' 那么显然它没有全部。在那里过滤实际的汽车数据。有没有人有什么建议。
我猜一种方法是将所有制造商数据复制到一个数组中,我可以搜索这个,但我必须参考。引用其 class 的初始索引,以及。看来久违了。
首先,您可以在不使用 Objective-C NSString
东西的情况下重写您原来的方法:
filteredManufacturers = Cars.filter {
[=10=].lowercased().contains(searchText.lowercased())
}
厂家搜索就可以了,很相似的方式:
filteredManufacturers = Cars.filter {
[=11=].manufacturer.lowercased().contains(searchText.lowercased())
}
(假设在Car
中有一个名为manufacturer
的实例String
)
我正在尝试使用 swift 实现 UISearchBar,我能找到的所有示例都与搜索字符串数组有关。
使用一个随机示例,假设我有一个名为 'Car' 的 class,其属性为 'manufacturer' 和 'model'
我有一系列汽车,名为 'Cars'
我想实现一个搜索栏,通过将字符串与 Cars 数组中的 'manufacturer'属性 进行比较来过滤结果。
到目前为止,我可以连接有关过滤结果数组、table 查看结果等的所有其他内容。我无法解决的问题是:
filteredManufacturers = Cars.filter({ (text) -> Bool in
let tmp: NSString = text as NSString
let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound })
我遇到的问题是我不知道如何只引用 class 的 属性。如果我输入:
filteredManufacturers = Cars.manufacturers.filter....
问题是 'Cars' 和 if 没有 属性 调用 'manufacturers'。我改变它。并尝试参考。 class 属性 'Car.manufacturers' 那么显然它没有全部。在那里过滤实际的汽车数据。有没有人有什么建议。
我猜一种方法是将所有制造商数据复制到一个数组中,我可以搜索这个,但我必须参考。引用其 class 的初始索引,以及。看来久违了。
首先,您可以在不使用 Objective-C NSString
东西的情况下重写您原来的方法:
filteredManufacturers = Cars.filter {
[=10=].lowercased().contains(searchText.lowercased())
}
厂家搜索就可以了,很相似的方式:
filteredManufacturers = Cars.filter {
[=11=].manufacturer.lowercased().contains(searchText.lowercased())
}
(假设在Car
中有一个名为manufacturer
的实例String
)