我对Swift(新手)很新颖,但对C#有很好的使用经验。Swift3使用Alamofire和返回字典下载JSON数据
我想要做的是使用Alamofire从API下载JSON数据并将字典返回给调用方法。 我遇到的问题不会将数据返回给调用函数。我假设我的问题是下载是异步的。
这是我下载数据的函数的代码。
import UIKit
import Alamofire
class SharedFunctions {
class func downloadWeatherData(url: String, completed: @escaping DownloadComplete) -> Dictionary<String, AnyObject>? {
let currentWeatherURL = URL(string: url)!
var workingDict: Dictionary<String, AnyObject>? = nil
Alamofire.request(currentWeatherURL).responseJSON {
response in
let result = response.result
workingDict = result.value as? Dictionary<String, AnyObject>
completed()
}
return workingDict
}
}
我具有存储在一个单独的常量类这种类型别名。
typealias DownloadComplete =() ->()
我的调用函数,当它碰到if let dict时,代码将继续执行而没有做太多的事情。这个函数被视图控制器代码调用。
func downloadWeatherDetails(completed: @escaping DownloadComplete)
{
if let dict = SharedFunctions.downloadWeatherData(url: CURRENTWEATHERURL, completed: completed) {
if let name = dict["name"] as? String {
self._cityName = name.capitalized
}
}
completed()
}
我这是工作的旧代码,我不得不调用Alamofire从downloadWeatherDetails函数被调用,把它做工精细,数据恢复回VC下载完成时。