我有一个主要功能(buttonPressed),应该打印出一个Jsonfile。
func buttonPressed {
var jasonFile = JSON()
jasonFile = getInfo(parA: 5, parB: 10) //1. takes some time
print(jsonFile) //prints before the JSON is get from the internet
}
要获取Jsonfile,我创建了一个函数,该函数接受参数并下载信息并返回Jsonfile。 当然,这需要花费相当长的时间,因此即使myFunction中的代码尚未接收到数据,也已经执行了。
(我正在使用Alamofire和SwiftyJSON)
func getInfo(parA: Int, parB: Int) -> [Int] {
var thisJsonFile = JSON()
Alamofire.request(url, method: .get).validate().responseJSON { response in
switch response.result {
case .success(let value):
let json = JSON(value)
thisJsonFile = json
case .failure(let error):
print(error)
}
}
return thisJsonFile //returns an empty File
}
有没有办法在完成加载后返回JsonFile?
答案 0 :(得分:-1)
谢谢您的回答,我找到了一个对我有用的解决方案:
我还安装了Alamofire_Synchronous。 我的函数的代码现在是:
func getInfo(parA: Int, parB: Int) -> [Int] {
let response = Alamofire.request(url).responseJSON()
switch response.result {
case .success(let value):
let json = JSON(value)
return json
case .failure(let error):
print(error)
return JSON()
}
}