我正在尝试解决这个完成 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/