如何将JSON传递给viewDidLoad函数中的函数?

时间:2015-04-23 10:22:29

标签: ios json swift

viewDidLoad内部我使用以下代码获取JSON:

request(.POST, "example.com", parameters: device).response { (request, response, data, error) in
        var jsonResult = NSJSONSerialization.JSONObjectWithData(data! as! NSData, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary

        var myJSON = JSON(data:data! as! NSData)
}

在底部我有一个函数answer()

func answer() {
    if queue+1 <= 3 {
        var questionBodyText = myJSON["result"][queue]["body"].stringValue
        var variantAText = myJSON["result"][queue]["var_a"].stringValue
        var variantBText = myJSON["result"][queue]["var_b"].stringValue
        var variantCText = myJSON["result"][queue]["var_c"].stringValue
        var variantDText = myJSON["result"][queue]["var_d"].stringValue
    }
}

但我不能在answer()中使用它打印的myJSONUse of unresolved identifier myJSON错误。

所以,我的问题是,如何从answer()函数中“看到”这个myJSON数据并使用它?

2 个答案:

答案 0 :(得分:1)

myJSON在响应块中声明,无法在此块外部访问。在外部声明变量(例如在您的类中)并使用您的json数据设置此变量。

修改

声明(在块外):

var myJSON:JSON?

并在您的请求中:

request(.POST, "http://example.com", parameters: device).response { (request, response, data, error) in
    var jsonResult = NSJSONSerialization.JSONObjectWithData(data! as! NSData, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary

    myJSON = JSON(data:data! as! NSData)
}

答案 1 :(得分:1)

在ViewController中将myJSON声明为属性:

class ViewController {
    var myJSON:JSON?
}

指定值:

myJSON = JSON(data:data! as! NSData)

并使用它:

if let j = myJSON {
    var questionBodyText = j["result"][queue]["body"].stringValue
}