Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 转义闭包捕获非转义参数分派_Swift - Fatal编程技术网

Swift 转义闭包捕获非转义参数分派

Swift 转义闭包捕获非转义参数分派,swift,Swift,我得到一个错误:转义闭包捕获非转义参数分派。此错误来自MovieService().getMovies行 typealias ActionCreator = (_ dispatch: (Action) -> (), _ getState: () -> AppState) -> () func fetchMovies() -> ActionCreator { return { dispatch, getState in

我得到一个错误:转义闭包捕获非转义参数分派。此错误来自MovieService().getMovies行

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) -> ()