-3

我有一个主要功能(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 完成加载后返回它?

4

1 回答 1

-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()
    }
}
于 2018-10-09T11:24:50.000 回答