现在,我已经能够访问要从JSON抓取的数据。现在,我需要创建一个变量来保存数据,因为我们不想将其存储在数据库中。
我试图使变量totalBalance
将该值存储为可选值,但它给了我一个错误,因为我尝试在函数中返回它,并且它返回nil并破坏了应用程序。当我将其赋值为0时,将返回零,因为该函数未按顺序运行,但会在alamofire请求的同时运行return语句,从而导致该变量永远不会被分配正确的值。我希望totalBalance
从函数中返回totalBalance。打印语句显示totalBalance
值在哪里死亡。
var totalBalance: Double = 0
func grabBalance() -> Double {
var getBalance: Double = 0
Alamofire.request("http://localhost:8000/accounts/balance/get", method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON { response in
print("Request: \(String(describing: response.request))") // original url request
print("Response: \(String(describing: response.response))") // http url response
print("Result: \(response.result)")
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)") // original server data as UTF8 string
} // response serialization result
if let json = response.result.value {
print("JSON: \(json)") // serialized json response
let jsonValue = JSON(json)
if let items = jsonValue["balanceResponse"]["accounts"].array {
for item in items {
if let current = item["balances"]["current"].double{
print(current)
getBalance = getBalance + current
}
self.totalBalance = getBalance
}
}
}
print("This is where it shows the total balance: \(self.totalBalance)")
}
print("This is where it shows that it is 0: \(self.totalBalance)")
return self.totalBalance
}
答案 0 :(得分:0)
使用Alamofire进行请求时,您正在使用Asynchronous
请求,这意味着请求后的代码将被执行,而不会等待请求完成。
在特定情况下,您可以在成功回调中返回totalBalance