ios - swift : Use closure compatible with Objective-C block

标签 ios objective-c swift

我尝试使用以下 Objective-C block 定义闭包:

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

正确的做法是什么?

最佳答案

试试这个。

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

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

关于ios - swift : Use closure compatible with Objective-C block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33903088/

相关文章:

iOS 格式指定类型 int 但参数类型为 int *

android - Ionic 3 - 无法在 iOS 手机中打开视频

ios - 隐藏导航栏时的假状态栏颜色

objective-c - Swift - 如何更改仅获取属性的值

iphone - 如何在固定时自动显示地点标题?

ios - 泛型不适用于隐式解包的可选

ios - arc4random_uniform()和arm64的不同行为

xcode - X 不是 Y 的成员类型

ios - UITableView 的 reloadData 与动态单元格高度不需要的滚动

objective-c - 绘制变暗的 NSImage 的最简单方法(如禁用 View )