现在我已经能够访问我试图从 JSON 中获取的数据。现在我需要创建一个变量来保存数据,因为我们不想将其存储在数据库中。
我尝试使变量totalBalance
将值存储为可选值,但它给了我一个错误,因为我尝试在函数中返回它,它返回为 nil 并破坏了应用程序。当我给它赋值 0 时,返回零,因为该函数没有按顺序运行,而是在 alamofire 请求的同时运行 return 语句,导致变量永远不会被分配正确的值。我希望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
}
当您使用 Alamofire 发出请求时,您使用的是Asynchronous
请求,这意味着请求之后的代码将被执行,并且不会等待请求完成。
在特定情况下,您可以在成功回调时返回totalBalance