SwiftyJSON Alamofire如何归还你得到的东西?

时间:2017-06-04 20:48:51

标签: json swift

如何归还你得到的东西?对不起,新手,我只是理解。enter image description here

enter image description here

1 个答案:

答案 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)
    }
}