加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:13:50 所属栏目:百科 来源:网络整理
导读:我在目标C中声明了枚举NS_OPTION typedef NS_OPTIONS(NSUInteger,PHRendererType){ PHRendererTypeSampleBuffer,PHRendererTypeOpenGLES,PHRendererTypeQuartz}; 但是,当我尝试通过调用在Swift项目中使用时. if rendererType == .PHRendererTypeSampleBuffer
我在目标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,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,PHRendererTypeSomethingElse
};

if renderedType == .SomethingElse { }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读