Alamofirenetworking提取完成处理程序

我试图创build一个函数,将返回一个自定义对象的列表,从parsingJSON创build。 我正在使用AlamoFire下载内容。 我已经写了这个函数,成功的时候创build了一个返回的位置数组。 但是,回报总是零。 我的代码如下:

func fetchLocations() -> [Location]? { var locations : [Location]? Alamofire.request(.GET, myURL) .responseJSON { response in switch response.result { case .Success(let data): locations = createMapLocations(data) case .Failure(let error): print("Request failed with error: \(error)") } } return locations } 

我非常积极的问题是,在networking请求完成之前,function正在返回。 我对Swift很陌生,不确定如何处理这个问题。 任何帮助,将不胜感激!

您可以阅读更多关于closures/完成处理程序https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html或谷歌。

 func fetchLocations(completionHandler: (locations: [Location]?, error: NSError) -> ()) -> () { var locations : [Location]? Alamofire.request(.GET, myURL) .responseJSON { response in switch response.result { case .Success(let data): locations = createMapLocations(data) completionHandler(locations, error: nil) case .Failure(let error): print("Request failed with error: \(error)") completionHandler(locations: nil, error: error) } } } 

用法

  fetchLocations(){ data in if(data.locations != nil){ //do something witht he data }else{ //Handle error here print(data.error) } }