我有一个简单的问题,我想退回这个:
let results = prices.filter{
if($0.MultipleSearchString != nil){
predicate.evaluate(with: ($0.MultipleSearchString?.lowercased())!)
}else {
self.loadPricesFromDb()
}
}
但是我对此有疑问,因为它给像这样的问题: 封闭中缺少回报,预计会返回“布尔”,我不知道为什么 有人可以给我解释一下吗?
答案 0 :(得分:1)
您使用的过滤器功能错误。
带有内联闭包的过滤器将使用提供的闭包中的逻辑评估数组的每个成员,并返回满足该逻辑的元素数组,例如:
let results = prices.filter {
$0.MultipleSearchString != nil
}
上面的结果将包含所有MultipleSearchString
与nil不同的元素。
调用一个大概从数据库加载数据的函数也很不好,因为它将在(几乎)每次迭代时触发。
您需要重构代码以更好地使用预期的解决方案。