the_critic
the_critic

Reputation: 12820

Objective-C completion block in Swift

I would like to call a completion block in Swift as I have always done in Objective-C. I took a look at closures, but for some reason, I cannot get it to work...

Obj-C:

- (void)someMethodWithParam1:(NSString *)param completion:(void(^)(NSArray* arr, NSURLResponse *resp))callback
{
    callback(arr, resp);
}

Swift:

func someMethodWithParam1(param: NSString, completion:((NSArray?, NSURLResponse?)->())) ->(){
                                                                                ^
                                                                                |
                                                                  /* Error: Insert ',' here */

    completion(arr, resp)

}

EDIT

Okay, it was not a syntactical error, but an error from my side. The method header I used here is different from the one in my code. So this code that I originally posted should work fine.

Upvotes: 0

Views: 2127

Answers (1)

Chris
Chris

Reputation: 2907

Typealias's are your friend here, just to make the code more readable

typealias onComplete = (NSArray?, NSURLResponse?) -> ()

func someMethodWithParam1(param: NSString, completion:onComplete) -> ()
{

    completion(arr, resp)

}

Upvotes: 3

Related Questions