Невозможно сохранить данные JSON из GET-запроса Alamofire в локальные переменные функции - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь сохранить данные из GET-запроса Alamofire. Но когда я делаю счет равным данным json, данным методом value, я все равно возвращаю 0 .. Какой лучший способ сохранить значения, заданные GET-запросом, в локальные переменные?

func loadInstallerCount() -> Int {
        var count: Int = 0
        Alamofire.request(URL, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { response in
            //print("String:\(String(describing: response.result.value))")

            if let data = response.result.value{
                let jsonData = data as! NSDictionary
                if(!(jsonData.value(forKey: "error") as! Bool)) {
                    //getting the user from response
                    count = jsonData.value(forKey: "installationcount") as! Int
                }else{
                    //error message in case of invalid credential
                    print("couldn't get count")
                }
            }
        }
        return count
    }

1 Ответ

0 голосов
/ 10 мая 2018

Используйте замыкание для этой цели, поскольку оно асинхронное.Пример:

func callTheFunction(){
    loadInstallerCount { (count) in
        print(count)
    }
}

func loadInstallerCount(result:(_:Int) -> Void) {
    var count: Int = 0
    Alamofire.request(URL, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { response in
        //print("String:\(String(describing: response.result.value))")

        if let data = response.result.value{
            let jsonData = data as! NSDictionary
            if(!(jsonData.value(forKey: "error") as! Bool)) {
                //getting the user from response
                count = jsonData.value(forKey: "installationcount") as! Int
            }else{
                //error message in case of invalid credential
                print("couldn't get count")
            }
            result(count)
        }
    }

}
...