arrays - 解决这个完成 block

标签 arrays swift filter closures swiftui

我正在尝试解决这个完成 block ,但我一直收到很多警告。

Xcode 给我警告

Cannot convert return expression of type '()' to return type '[AirportModel]'

抱歉,我是初学者...对这个关闭有点迷失...

我必须返回 AirportModel 这个向量才能显示在 swiftUI 的列表中,我想使用 DispatchQueue 以避免在搜索时阻塞 View :

func filter (valoreSearhed: String, arrayTosearh: AirportVector, completionBlock: (_ airports: [AirportModel]) -> Void) -> [AirportModel]  {
    DispatchQueue.global().async {
        let results  = arrayTosearh.filter { $0.aptICAO.localizedCaseInsensitiveContains(valoreSearhed) }
        completionBlock(results)
    }
}

最佳答案

问题不在于关闭。

问题是您已定义此 filter 方法来返回 [AirportModel],但事实并非如此。去掉函数声明末尾的 -> [AirportModel] 。您不会从此函数返回任何内容。您正在使用完成处理程序来传回结果。

<小时/>

顺便说一下,别忘了将你的闭包标记为@escaping

关于arrays - 解决这个完成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59596993/

相关文章:

java - IF 语句检查(无法正常工作)

c# - 解析多个枚举值(已标记): Reading in a filter type from a query string

arrays - 数组上的Elasticsearch术语过滤器

java - Gson无法解析嵌套字符串对象

javascript - 指定属性返回它的js递归函数

c++ - 如何使程序声明可变数量的不确定大小的数组

html - 将背景过滤器应用于 svg 路径元素

ios - 实例和初始化的区别

ios - 在堆栈 View 中的某些元素内设置空间

ios - ScrollView 中的 SwiftUI 动画不起作用