我有一个提取请求,该请求带有一些我想过滤的数据,例如:

// Set up fetch request
let finalVariants : [DBVariant]
do {
  let variants = try context.fetch(request)
  finalVariants = variants.filter() { $0.variant == true }
} catch let error as NSError {
  // Handle error
  finalVariants = []
}


编写这段代码,Xcode给我标题中的错误:

Cannot invoke 'filter' with an argument list of type '((Any) throws -> Bool)'


过滤器块中的代码不会抛出异常,将过滤器块移动到带有签名(Any)-> Bool的单独变量中没有帮助。

最佳答案

答案是我没有解包并将类型分配给fetch请求的可选结果,因此工作代码如下:

// Set up fetch request
let finalVariants : [DBVariant]
do {
  let variantsResult = try context.fetch(request)
  if let variants = variantsResult as? [DBVariant] {
    finalVariants = variants.filter() { $0.variant == true }
  } else {
      finalVariants = []
  }
} catch let error as NSError {
  // Handle error
  finalVariants = []
}

关于ios - Swift:无法使用类型为(((Any)throws-> Bool)'的参数列表调用'filter',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41836659/

10-10 21:03