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()中使用它打印的myJSON
,Use of unresolved identifier myJSON
错误。
所以,我的问题是,如何从answer()函数中“看到”这个myJSON数据并使用它?
答案 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
}