ios - 如果过滤器返回 nil,我如何不返回空结果?

标签 ios swift

我正在执行以下过滤,返回一个食谱列表,按给定的类别名称值过滤。

filteredRecipe = filteredRecipe.filter({
    if let category = $0.valueForKey("category") as? NSManagedObject {
        if let name = category.valueForKey("name") as? String {
            return name.rangeOfString(cap) != nil
        } else {
            return false
        }
    } else {
        return false
    }
})

此过滤器与 searchBar 文本字段结合使用,因此我可能会在文本字段中使用随机值,这将使 filteredRecipe 保存不可靠的数据。

我需要确保当过滤器无法从具有给定类别名称值的 filteredRecipe 中找到任何食谱时,我会保持 filteredRecipe 不变。 目前,当没有匹配项时,它会使 filteredRecipe 为空数组 []。我不确定是什么原因造成的。

最佳答案

您需要将过滤结果分配给一个临时变量并检查它是否不为空。

let filtered = filteredRecipe.filter({
    if let category = $0.valueForKey("category") as? NSManagedObject {
        if let name = category.valueForKey("name") as? String {
            return name.rangeOfString(cap) != nil
    } 
    return false
})

if !filtered.isEmpty {
    filteredRecipe = filtered
}

关于ios - 如果过滤器返回 nil,我如何不返回空结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955448/

相关文章:

javascript - Socket IO Swift 客户端发送带有 ACK 的消息

ios - 将 self 作为参数传递以设置为委托(delegate)

ios - iOS10 高度问题中的 Today widget swift

swift - Swift 中的嵌套类型——好的做法是什么?

swift - 如何从 Swift 中的 AppDelegate 引用当前的 SKScene

ios - 如何改变 UITextField 的形状?

ios - 在 WatchOS 端创建自定义 Long-Nook 通知

ios - SWIFT 无限动画/函数调用循环

swift - UIAlertController 代码运行,但不显示警报

ios - 什么可能导致此 "Fatal Exception: CALayerInvalidGeometry CALayer bounds contains NaN: [nan nan; nan nan]"崩溃?