【问题标题】:boolean return help to find fix布尔返回帮助查找修复
【发布时间】:2019-07-30 09:22:22
【问题描述】:

我有一个简单的问题,我想退货:

let results = prices.filter{
            if($0.MultipleSearchString != nil){
                predicate.evaluate(with: ($0.MultipleSearchString?.lowercased())!)
            }else {
                self.loadPricesFromDb()
            }
        }

但我有问题,因为它给出的问题如下: 预期会返回“布尔”的闭包中缺少返回,我不知道为什么 有人可以解释一下吗?

【问题讨论】:

  • filter 希望您为每次比较返回一个布尔值。例如prices.filter { $0 > 50.0 }(基于价格为[Double]。如果没有关于您在做什么以及价格实际包含的更多信息/背景,很难给您一个准确的答案
  • 错误用法。你应该检查一下:developer.apple.com/documentation/swift/string/2893557-filter

标签: ios swift return boolean new-operator


【解决方案1】:

你用错了过滤功能。

带有内联闭包的过滤器将使用提供的闭包中的逻辑评估数组的每个成员,并返回满足该逻辑的元素数组,例如:

let results = prices.filter {
    $0.MultipleSearchString != nil
}

上面将得到所有MultipleSearchString 与 nil 不同的元素的结果。

调用一个可能从数据库加载数据的函数也很糟糕,因为它会(几乎)每次迭代都触发。

您需要重构代码以更好地使用您的预期解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-28
    • 2020-08-06
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2020-09-24
    相关资源
    最近更新 更多