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

时间:2015-11-24 20:22:22

标签: ios objective-c swift

我尝试使用以下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

    })

...并收到以下错误(见图):

无法转换类型的值'([AnyObject],UPURLResponse,NSErrorPointer) - > Void'到预期的参数类型'UPBaseEventAPIArrayCompletion!'

enter image description here

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

试试这个。

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

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