从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/

10-10 21:30