objective-c - 将 0 作为枚举选项传递给 Swift 中的 Objective C 函数

标签 objective-c swift enums

有些 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/

相关文章:

swift - 我必须使用协议(protocol)/委托(delegate)来让 ViewController 执行在另一个类中创建的 UIButton 的操作吗?

swift - 单击触发打开另一个 VC 的按钮时如何将按钮 sender.tag 传递给另一个 VC

spring - Spring 框架中的Jackson反序列化错误处理

objective-c - 我在 NSView 中得到错误的自定义背景颜色和黑色而不是背景图像

ios - 呈现 View Controller 后更改 iOS 状态栏颜色或导航栏颜色?

ios - 从 iPhone 仅获取新的/修改的电话联系人

c++ - 相同的枚举类,但根据条件定义不同

objective-c - UIImage 基于图 block 的 map 移动缓慢

swift - 如何将GB-2312编码改为UTF-8

java - Wildfly - 在可嵌入 bean 中使用枚举