iOS Swift中等效的Java接口回调

时间:2017-09-05 23:29:43

标签: java ios swift

我正在尝试找到一种在Swift中处理异步网络请求的方法。我的计划是在他们自己的类中隔离这些调用,所以我需要一种方法来处理回调。在Android中,我使用Interface

执行以下操作
apiService.fetch(data, new Callback() {
    @Override
    public void onResponse(Response r) {
        // success
    }

    @Override
    public void onFailure(Error e) {
        // error
    }
});

有人能指出我在Swift 3中如何处理这个问题的方向吗?谢谢!

1 个答案:

答案 0 :(得分:1)

可以有多个完成处理程序。这是一个简短的例子:

func request(url:String, success:@escaping(Any) -> Void, failure:@escaping(Any?) -> Void)
{
    let task = URLSession.shared.dataTask(with: URL.init(string: url)!) { (data, response, error) in
        if let responseError = error
        {
            failure(responseError)
        }
        else if let responseData = data  //Make additional checks if there is an error
        {
            success(responseData)  //Call when you are sure that there is no error
        }
        else
        {
            failure(nil)
        }
    }
    task.resume()
}

使用示例:

self.request(url: "https://jsonplaceholder.typicode.com/posts", success: { (data) in
        //Do if success
    }) { (error) in
        //Do if error
    }