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

时间:2015-03-15 06:45:49

标签: 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' is not convertible to SDWebImageOptions。我尝试了类似下面的内容,但是我得到了同样的错误:

let emptyOptions:SDWebImageOptions = 0

1 个答案:

答案 0 :(得分:5)

从Swift 2开始,选项集的语法被更改为使用数组文字。因此,如果您不想传递任何选项,则传递一个空列表:

SDWebImageManager.sharedManager().downloadWithURL(url, options: [], progress: nil) { (image:UIImage!, error:NSError!, cacheType:SDImageCacheType, finished:Bool) -> Void in
    // code here
}