objective-c – 在Swift Project中使用在目标C中声明的NS_Option枚举

我在目标C中声明了枚举NS_OPTION

    typedef NS_OPTIONS(NSUInteger, PHRendererType)
{
    PHRendererTypeSampleBuffer,
    PHRendererTypeOpenGLES,
    PHRendererTypeQuartz
};

但是,当我尝试通过调用在Swift项目中使用时.

if rendererType == .PHRendererTypeSampleBuffer{

}

它无法编译错误:表达式类型不明确没有更多上下文.

我也访问了这个话题Swift: Trouble Using Enums Declared in Objective-C, In Swift,但它没有解决我的问题

谢谢你的帮助.

最佳答案 您链接的问题确实为您的问题提供了解决方案:

if rendererType == .SampleBuffer {

}

当您将枚举定义为NS_OPTIONS(类型,EnumPrefix)时,从Swift中的所有引用中删除EnumPrefix.但是,请注意,在您破坏Objective-C中的命名约定时,此快捷方式将无效:

// 1.
typedef NS_OPTIONS(NSUInteger, PHRendererType)
{
    PHRendererTypeSampleBuffer,
    PHRendererTypeOpenGLES,
    PHRendererTypeQuartz,
    SomethingElse
};

// Now you have to use the full enum name:
if renderedType == .PHRendererTypeSampleBuffer { }


// 2. Follow the naming convention and you can use the shortcut again:
typedef NS_OPTIONS(NSUInteger, PHRendererType)
{
    PHRendererTypeSampleBuffer,
    PHRendererTypeOpenGLES,
    PHRendererTypeQuartz,
    PHRendererTypeSomethingElse
};

if renderedType == .SomethingElse { }
点赞