Как я могу ждать завершения операции, прежде чем продолжить? - PullRequest
0 голосов
/ 07 октября 2018

У меня есть основная функция (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 после завершения загрузки?

1 Ответ

0 голосов
/ 09 октября 2018

Спасибо за ваши ответы, я нашел решение, которое работает для меня:

Я дополнительно установил 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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...