I'm trying to find a way to handle asynchronous network requests in Swift. My plan is to isolate these calls in their own class, so I need a way to handle callbacks. In Android, I'm doing something like the following using an Interface:
apiService.fetch(data, new Callback() {
    @Override
    public void onResponse(Response r) {
        // success
    }
    @Override
    public void onFailure(Error e) {
        // error
    }
});
Can someone point me in the direction on how I can handle this similarly in Swift 3? Thanks!