我在目标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 { }