Swift 转义闭包捕获非转义参数分派
我得到一个错误:转义闭包捕获非转义参数分派。此错误来自MovieService().getMovies行Swift 转义闭包捕获非转义参数分派,swift,Swift,我得到一个错误:转义闭包捕获非转义参数分派。此错误来自MovieService().getMovies行 typealias ActionCreator = (_ dispatch: (Action) -> (), _ getState: () -> AppState) -> () func fetchMovies() -> ActionCreator { return { dispatch, getState in
typealias ActionCreator = (_ dispatch: (Action) -> (), _ getState: () -> AppState) -> ()
func fetchMovies() -> ActionCreator {
return { dispatch, getState in
MovieService.getMovies(url: "http://www.omdbapi.com/?s=Batman&page=2&apikey=YOURKEY") { result in
switch result {
case .success(let movies):
if let movies = movies {
dispatch(.populateMovies(movies))
}
case .failure(let error):
print(error.localizedDescription)
}
}
}
}
有什么想法吗?如文件所述:
当闭包作为函数传递时,闭包被称为转义函数
函数的参数,但在函数返回后调用。
当您声明一个函数,该函数将闭包作为其
参数,您可以在参数的类型之前写入@escaping
指示允许关闭逃逸
默认情况下,闭包是nonescaping
,与dispatch
参数类似,但您在转义
闭包中调用它,该闭包可能是您在getMovies
函数中作为参数传递的闭包
解决方案很简单,只需在分派
参数类型之前添加@转义
:
typealias ActionCreator = (_ dispatch: @escaping (Action) -> (), _ getState: () -> AppState) -> ()