我对这段代码的目的是在全局变量中存储一个闭包变量,这段代码我想将jsonResponse.data存储到aa中,但是每次在闭包外aa都是nil,它似乎是逻辑但是有没有办法将这个变量保留在闭包之外?
感谢您的帮助
我的代码
import UIKit
import Alamofire
class ViewController: UIViewController {
var myJson:NSDictionary?
var aa:Any?
override func viewDidLoad() {
super.viewDidLoad()
let url="https://mastodon.cloud/api/v1/apps"
Alamofire.request(url, method: .post, parameters: ["client_name": "Coucou", "redirect_uris": "urn:ietf:wg:oauth:2.0:oob", "scopes": "read"]).responseJSON { (jsonResponse) in
if jsonResponse.error != nil{
print("error \(jsonResponse.error.debugDescription)")
return
}
print(jsonResponse.data!)
self.aa=jsonResponse.data!
}
print(aa) // return nil !!!
}
}
答案 0 :(得分:1)
您走在正确的轨道上,但您的代码执行顺序错误。 “print”在关闭之前执行,因此“nil”是正确的。
如果在闭包完成后调用“print(aa)”,则表示设置正确。
print(jsonResponse.data!)
self.aa=jsonResponse.data!
print(self.aa) // should work
}