gpt4 book ai didi

objective-c - 在 Swift 项目中使用 Objective-C 中声明的 NS_Option 枚举

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:43 26 4
gpt4 key购买 nike

我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com