如何归还你得到的东西?对不起,新手,我只是理解。enter image description here
答案 0 :(得分:0)
Alamofire.request
是一个异步任务,因此在此之后编写的任何代码很可能在任务完成之前执行。有几种方法可以做你想要的,但由于你没有提供太多信息,我刚刚将JSON
移到了闭包内。所以你应该打印一些东西。
Alamofire.request("https://...").responseJSON { (response) in
// Inside this closure is where you receive your JSON
if let value = response.value {
let json = JSON(value)
let title = json["posts", 3, "title"].stringValue
print("Title:", title)
}
}
// Any code after this request will most likely be executed before
// the request has completed because it is done asynchronously.
这是另一种可能更适合您的方式。
我知道你是初学者,这些操作可能非常复杂。您需要了解代码执行的顺序以及变量的工作方式。您收到该错误是因为swiftyJsonVar
是在viewDidLoad
中的代码无法访问的块中声明的。我建议您了解multi-threading
和其他asynchronous
任务,并可能了解如何正确声明和使用变量。
override func viewDidLoad() {
super.viewDidLoad()
load { (json) in
if let json = json {
let title = json["posts", 3, "title"].stringValue
print("Title:", title)
}
}
}
func load(completion: @escaping (JSON?) -> Void){
Alamofire.request("https://httpbin.org/get").responseJSON { (response) in //https://...
var json: JSON?
if let value = response.value {
json = JSON(value)
}
completion(json)
}
}