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)
}
我试图在ViewController
的header
中声明let hoge
和let 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
。
我试图找出 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)
}
我试图在ViewController
的header
中声明let hoge
和let 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
。