Ios Swift中的Objective-C完井区块

Ios Swift中的Objective-C完井区块,ios,objective-c,swift,Ios,Objective C,Swift,我想在Swift中调用一个完成块,就像我在Objective-C中一直做的那样。我查看了闭包,但由于某些原因,我无法让它工作 Obj-C: - (void)someMethodWithParam1:(NSString *)param completion:(void(^)(NSArray* arr, NSURLResponse *resp))callback { callback(arr, resp); } 斯威夫特: func someMethodWithParam1(param:

我想在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)

}
编辑
好吧,这不是语法错误,而是我这边的错误。这里使用的方法头与代码中的方法头不同。所以我最初发布的代码应该可以正常工作

Typealias是您的朋友,只是为了让代码更具可读性

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

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

    completion(arr, resp)

}

Typealias是您的朋友,只是为了让代码更具可读性

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

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

    completion(arr, resp)

}

Typealias是您的朋友,只是为了让代码更具可读性

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

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

    completion(arr, resp)

}

Typealias是您的朋友,只是为了让代码更具可读性

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

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

    completion(arr, resp)

}

“不起作用”并不能提供信息。当然,它不起作用,因为如果它起作用,您就不会(希望)出现堆栈溢出。问题到底是什么?你看到了什么错误?Swift闭包是什么样子的?@user3477950我想人们可以从Objective-C代码中推断出我想要实现的目标。我希望Swift中的方法与给定的Obj-C方法完全相同。我已经更新了问题,以显示我所犯的错误…@评论家“我以为可以从Objective-C代码中推断出我想要达到的目标”-我们可以推断出你想要达到的目标,但我们无法猜测你会犯什么错误。@user3477950我确信这是一个语法问题,我认为这对于已经熟悉闭包的人来说是显而易见的。闭包上没有太多的资源,这可能会让我走上正确的道路,对此我深表歉意。我希望它现在更清楚了……“不起作用”是没有信息的。当然,它不起作用,因为如果它起作用,您就不会(希望)出现堆栈溢出。问题到底是什么?你看到了什么错误?Swift闭包是什么样子的?@user3477950我想人们可以从Objective-C代码中推断出我想要实现的目标。我希望Swift中的方法与给定的Obj-C方法完全相同。我已经更新了问题,以显示我所犯的错误…@评论家“我以为可以从Objective-C代码中推断出我想要达到的目标”-我们可以推断出你想要达到的目标,但我们无法猜测你会犯什么错误。@user3477950我确信这是一个语法问题,我认为这对于已经熟悉闭包的人来说是显而易见的。闭包上没有太多的资源,这可能会让我走上正确的道路,对此我深表歉意。我希望它现在更清楚了……“不起作用”是没有信息的。当然,它不起作用,因为如果它起作用,您就不会(希望)出现堆栈溢出。问题到底是什么?你看到了什么错误?Swift闭包是什么样子的?@user3477950我想人们可以从Objective-C代码中推断出我想要实现的目标。我希望Swift中的方法与给定的Obj-C方法完全相同。我已经更新了问题,以显示我所犯的错误…@评论家“我以为可以从Objective-C代码中推断出我想要达到的目标”-我们可以推断出你想要达到的目标,但我们无法猜测你会犯什么错误。@user3477950我确信这是一个语法问题,我认为这对于已经熟悉闭包的人来说是显而易见的。闭包上没有太多的资源,这可能会让我走上正确的道路,对此我深表歉意。我希望它现在更清楚了……“不起作用”是没有信息的。当然,它不起作用,因为如果它起作用,您就不会(希望)出现堆栈溢出。问题到底是什么?你看到了什么错误?Swift闭包是什么样子的?@user3477950我想人们可以从Objective-C代码中推断出我想要实现的目标。我希望Swift中的方法与给定的Obj-C方法完全相同。我已经更新了问题,以显示我所犯的错误…@评论家“我以为可以从Objective-C代码中推断出我想要达到的目标”-我们可以推断出你想要达到的目标,但我们无法猜测你会犯什么错误。@user3477950我确信这是一个语法问题,我认为这对于已经熟悉闭包的人来说是显而易见的。闭包上没有太多的资源,这可能会让我走上正确的道路,对此我深表歉意。我希望现在更清楚了……我建议像使用类型一样使用
typealias
,在命名时使用大写字母以避免混淆。例如,
typealias CompletionHandler=(NSArray?,NSURLResponse?)->(
这样,你可以从变量中分辨出你的
typealias
。我建议像类型一样使用
typealias
,命名时使用大写字母以避免混淆。例如,
typealias CompletionHandler=(NSArray?,NSURLResponse?)->(
这样,你可以从变量中分辨出你的
typealias
。我建议像类型一样使用
typealias
,命名时使用大写字母以避免混淆。例如,
typealias CompletionHandler=(NSArray?,NSURLResponse?)->(
这样,你可以从变量中分辨出你的
typealias
。我建议像类型一样使用
typealias
,命名时使用大写字母以避免混淆。例如,
typealias CompletionHandler=(NSArray?、nsurresponse?)->(
通过这种方式,您可以从变量中识别
typealias