作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 Objective 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(type, 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 { }
关于objective-c - 在 Swift 项目中使用 Objective-C 中声明的 NS_Option 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941331/
我是一名优秀的程序员,十分优秀!