在我的C代码中,通常会有一个枚举大小写,其末尾称为count。但是当我在Swift中使用枚举时,它也将具有该值,我必须在switch语句中处理该值。
在导入Swift时是否可以使用某些属性来排除大小写?
答案 0 :(得分:4)
您可以在枚举器上使用NS_SWIFT_UNAVAILABLE
宏:
typedef NS_ENUM(unsigned, Foo) {
bar,
baz,
count NS_SWIFT_UNAVAILABLE("Count does not represent a case")
};
NS_SWIFT_UNAVAILABLE
与要应用于枚举器的任何__attribute__
一样,在枚举器名称之后但在=
之前(如果需要)。
如果包含<Foundation/Foundation.h>
,则定义宏。如果包含CoreFoundation,您将得到CF_SWIFT_UNAVAILABLE
,其作用相同。如果您都不输入,则可以使用长格式:
__attribute__((availability(swift, unavailable, message="your message")))
带有NS_SWIFT_UNAVAILABLE
注释的枚举数不会显示在自动完成中,并且如果未在Swift端进行处理,也不会引起构建问题。如果尝试使用它,则会收到包含您的消息的硬错误。
请记住,从Swift 5开始,如果您的目的是避免出现NS_ENUM
情况,则可能需要使用NS_CLOSED_ENUM
而不是default
。