有些 Objective-C 库的函数将整数枚举选项作为参数,但如果您需要默认选项,它们希望您传递 0,这很典型。但在 Swift 中,这是不允许的,因为库指定了枚举类型。除了向库添加 0 枚举选项然后制作桥接代码以使其 ObjC 枚举在 Swift 中工作之外,是否有任何解决方法?
这是一个在 iPhone 应用程序中使用 SDWebImageManager
的示例:
SDWebImageManager.sharedManager().downloadWithURL(url, options: 0, progress: nil) { (image:UIImage!, error:NSError!, cacheType:SDImageCacheType, finished:Bool) -> Void in
// block code here
}
Xcode 会在显示 options: 0
的地方指出错误,因为 'Int' 不能转换为 SDWebImageOptions
。我试过类似下面的方法,但我得到了同样的错误:
let emptyOptions:SDWebImageOptions = 0
最佳答案
从 Swift 2 开始,选项集的语法已更改为使用数组文字。所以如果你不想传递任何选项,你传递一个空列表:
SDWebImageManager.sharedManager().downloadWithURL(url, options: [], progress: nil) { (image:UIImage!, error:NSError!, cacheType:SDImageCacheType, finished:Bool) -> Void in
// code here
}
关于objective-c - 将 0 作为枚举选项传递给 Swift 中的 Objective C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29058007/