SwiftyJSON 如何正确访问变量?

SwiftyJSON how to correctly access variables?

我试图找出 SwiftyJSON 但我遇到了问题

下面显示的代码工作正常

 import UIKit     
 class ViewController: UIViewController {
    override func viewDidLoad() {
            super.viewDidLoad()

            let url = NSURL(string: "https://api.whitehouse.gov/v1/petitions.json")
            var request = NSURLRequest(URL: url!)
            var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
            if data != nil {
            let hoge = JSON(data: data!)
            let count = hoge["results"][0]["body"]
            println(count)
            }
    }}     

但是当我尝试添加一个访问 hoge 的方法时 returns 什么都没有

代码如下所示

 func res() {
  dump(hoge)
 }

我试图在ViewControllerheader中声明let hogelet count,但总是报错。

如何正确执行,以便我可以通过所有代码访问数组?

提前致谢

如果您在函数内声明一个变量,就像您在 viewDidLoad 中所做的那样,此变量 在同一范围内可用,这意味着该变量不可用viewDidLoad 之外不存在。实际上它甚至在函数执行完成时被释放(销毁)。

解决方案是在 class 的根目录下创建 var hoge: JSON?,在任何函数之外,然后仅在可用时将 JSON 值分配给此变量:

class ViewController: UIViewController {

    var hoge: JSON?

    override func viewDidLoad() {
            super.viewDidLoad()

            let url = NSURL(string: "https://api.whitehouse.gov/v1/petitions.json")
            var request = NSURLRequest(URL: url!)
            var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
            if data != nil {
                hoge = JSON(data: data!)
                let count = hoge!["results"][0]["body"]
                println(count)
            }
    }}

这样你还可以创建其他方法来访问 viewDidLoad 之外的 hoge