【发布时间】:2018-07-22 19:57:19
【问题描述】:
要搜索包含在我使用的结构中的字符串:
let results = myArray.filter( {$0.model.localizedCaseInsensitiveContains("bu")} )
但是假设该结构有几个我想搜索的属性 - 或者我什至想一次搜索所有这些属性。我只能过滤原始类型,因此将“模型”排除在外是行不通的。
解决办法-------------
虽然我真的很喜欢下面 Matt 建议的使用键路径的想法,但我最终在我的结构中添加了一个函数,使我的视图控制器代码更加简洁:
struct QuoteItem {
var itemIdentifier: UUID
var quoteNumber: String
var customerName: String
var address1: String
func quoteItemContains(_ searchString: String) -> Bool {
if self.address1.localizedCaseInsensitiveContains(searchString) ||
self.customerName.localizedCaseInsensitiveContains(searchString) ||
self.quoteNumber.localizedCaseInsensitiveContains(searchString)
{
return true
}
return false
}
然后,在我的控制器中,quotes 是一个 QuoteItem 数组,我可以通过简单地编写来搜索:
searchQuoteArray = quotes.filter({ $0.quoteItemContains(searchString) })
【问题讨论】: