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中,这些参数必须定义为可选项。