观察完json loading

时间:2016-09-02 20:56:32

标签: ios json swift properties httprequest

我有一个小问题。我希望有这样的功能:

func performGetRequest(targetURL: NSURL!, completion: (data: NSData?, HTTPStatusCode: Int, error: NSError?) -> Void) {
    let request = NSMutableURLRequest(URL: targetURL)
    request.HTTPMethod = "GET"

    let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()

    let session = NSURLSession(configuration: sessionConfiguration)

    let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            completion(data: data, HTTPStatusCode: (response as! NSHTTPURLResponse).statusCode, error: error)
        })
    })

    task.resume()
}

我在appcoda.com找到了,但是在加载数据并完成解析时可以选择执行某些操作。类似的东西:

UIView.animateWithDuration(3.0, delay: 0, options: .CurveEaseIn, animations: { () -> Void in

        }, completion: {finished in
            self.functionXY()
    })

我的完整计划是从两个特定页面加载json数据,第二个json链接是从第一个json的数据生成的。所以我在第一个完成后启动http请求是什么。 当第二个完成后,我想调用一个函数将我的视图从加载屏幕更改为mainView。

2 个答案:

答案 0 :(得分:0)

您只需在performGetRequest:

的完成处理程序中调用动画代码即可
func aFunction() {
    performGetRequest(yourURL) { (data, HTTPStatusCode, error) in
        if error == nil {
            self.animate()
        }
    }
}

func animate() {
    UIView.animateWithDuration(3.0, delay: 0, options: .CurveEaseIn, animations: { () -> Void in

    }, completion: {finished in
        self.functionXY()
})

答案 1 :(得分:-1)

您可以依赖 Alamofire 或其他http / post-request开源库,而不是简单的请求。
否则,您可以使用 NSURLSessionDataTask / NSURLSessionDownloadTask 和相应的完成处理程序
希望这可能会有所帮助