从Xcode 10.2开始,使用我在Objective-C中定义的枚举时,但是在Swift 5 switch语句中,即使已经用尽所有可能的枚举值,我也会收到以下警告。
Switch covers known cases, but 'MyObjectiveCEnumName' may have additional
unknown values
Xcode告诉我应该通过以下方法解决此问题
Handle unknown values using "@unknown default"
为什么会发生这种情况,我该怎么办?
例子
Objective-C列举
typedef NS_ENUM(NSUInteger, CardColor) {
CardColorBlack,
CardColorRed
};
Swift 5开关声明
var cardColor: CardColor = .black
switch (cardColor) {
case .black:
print("black")
case .red:
print("red")
}
最佳答案
TL; DR
如果要像对待Swift对象一样对待Objective-C枚举,则现在需要使用不同的宏NS_CLOSED_ENUM
和旧的NS_ENUM
声明它们。更改此设置将使警告消失。
德特斯
从Swift 5 release notes:
关于objective-c - 针对Objective-C枚举的新Swift 5警告: how to get rid of them?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55401865/