我想在Swift中调用一个完成块,就像我在Objective-C中一直做的那样。我看了一下封口,但出于某种原因,我无法让它工作......
的OBJ-C:
- (void)someMethodWithParam1:(NSString *)param completion:(void(^)(NSArray* arr, NSURLResponse *resp))callback
{
callback(arr, resp);
}
斯威夫特:
func someMethodWithParam1(param: NSString, completion:((NSArray?, NSURLResponse?)->())) ->(){
^
|
/* Error: Insert ',' here */
completion(arr, resp)
}
好吧,这不是语法错误,而是我身边的错误。我在这里使用的方法标题与我的代码中的方法标题不同。所以我最初发布的代码应该可以正常工作。
答案 0 :(得分:3)
Typealias是你的朋友,只是为了让代码更具可读性
typealias onComplete = (NSArray?, NSURLResponse?) -> ()
func someMethodWithParam1(param: NSString, completion:onComplete) -> ()
{
completion(arr, resp)
}