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

Objective c 将0作为枚举选项传递给Swift中的目标C函数,objective-c,swift,enums,Objective C,Swift,Enums,有些Objective-C库的函数将整数枚举选项作为参数,但它们希望您在需要默认选项时传入0,这是典型的。但在Swift中,这是不允许的,因为库指定了枚举类型。有没有办法解决这个问题,向库中添加一个0枚举选项,然后生成桥接代码,使其ObjC枚举在Swift中工作 以下是iPhone应用程序中的SDWebImageManager示例: SDWebImageManager.sharedManager().downloadWithURL(url, options: 0, progress: nil)

有些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将指出一个错误,其中显示
选项: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
}

尝试此操作时,我发现错误
SDWebImageOptions不符合协议NilLiteralConvertible
。如果我这样做,Swift似乎希望
downloadWithURL
函数接受
options
的可选参数,但当然ObjC不支持可选类型。请确保您使用的是最新版本的Xcode。这个代码应该可以工作。Objective-C中声明的枚举和Swift中实现的BEGINE结构
RawOptionSetType
继承到
NiLiteralConvertible
。或者,您可以使用
SDWebImageOptions.allzero
SDWebImageOptions(0)
。如何
SDWebImageOptions(rawValue:0)