我正在尝试使用swift实现UISearchBar,我可以找到的所有示例都与搜索字符串数组有关。
使用一个随机示例,假设我有一个名为'Car'的类,其属性为'manufacturer'和'model']
我有一系列叫'Cars'的汽车
我想实现一个搜索栏,通过将字符串与Cars数组中的'manufacturer'属性进行比较来过滤结果。
到目前为止,我可以连接有关过滤结果数组,表视图结果等的所有其他信息。我无法解决的是:
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})
我的问题是我不知道如何仅引用类的属性。如果输入:
filteredManufacturers = Cars.manufacturers.filter....
存在一个问题,即“汽车”和“如果”没有属性称为“制造商”。我改变它。并尝试参考。类属性“ Car.manufacturers”,那么显然它没有全部。要过滤的实际汽车数据。有人有任何建议吗?
我想一种方法是将所有制造商的数据复制到一个数组中,我可以进行搜索,但是我必须参考它。初始索引以引用其类,以及。似乎很受伤。
首先,无需使用Objective-C NSString
即可重写原始方法:
filteredManufacturers = Cars.filter {
$0.lowercased().contains(searchText.lowercased())
}
可以通过制造商进行搜索是非常相似的方式:
filteredManufacturers = Cars.filter {
$0.manufacturer.lowercased().contains(searchText.lowercased())
}
(假设在manufacturer
中有一个实例类型为String
的Car
实例属性]