从闭包中存储变量中的数据

时间:2017-04-25 12:12:26

标签: ios swift closures

我对这段代码的目的是在全局变量中存储一个闭包变量,这段代码我想将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 !!!
    }
}

1 个答案:

答案 0 :(得分:1)

您走在正确的轨道上,但您的代码执行顺序错误。 “print”在关闭之前执行,因此“nil”是正确的。

如果在闭包完成后调用“print(aa)”,则表示设置正确。

  print(jsonResponse.data!)
  self.aa=jsonResponse.data!
  print(self.aa) // should work
}