Swift:使用与Objective-C块兼容的闭包

我试图用下面的Objective-C块来定义一个闭包:

typedef void(^UPBaseEventAPIArrayCompletion)(NSArray *results, UPURLResponse *response, NSError *error); + (void)getFriendsWithCompletion:(UPBaseEventAPIArrayCompletion)completion; 

在这个:

 UPUserAPI.getFriendsWithCompletion({(friends: [AnyObject], response: UPURLResponse, error: NSErrorPointer) -> Void in }) 

…并得到以下错误(见图片):

无法将types'([AnyObject],UPURLResponse,NSErrorPointer) – > Void'的值转换为期望的参数types'UPBaseEventAPIArrayCompletion!'

在这里输入图像说明

什么是正确的方法来做到这一点?

尝试这个。

 UPUserAPI.getFriendsWithCompletion({(friends: [AnyObject]?, response: UPURLResponse?, error: NSError?) -> Void in //code }) 

在Objective C代码中,任何这些参数都可以是零。 所以在Swift中,这些参数必须定义为可选项。