Xcode 10.2がリリースされてからSwift 5に移行した方も多いと思います。
enumのcaseで分岐するSwitch文を書いたとき、
以下のようにHandle unknown values using "@unknown default"と
警告が出るときと出ないときがありました。

この違いは何なのか調査しました。
Frozen enumとnon-frozen enum
・frozen enumを使ったときは警告が出ない。
・non-frozen enumを使うと@unknown defaultを使いなさいと警告が出る。
non-frozen enumとは、
Objective-Cで記述されたenumでNS_ENUMで定義されています。
将来caseが追加される可能性があることを示しています。
| 言語 | Objective-C | Objective-C | Swift |
|:--:|:--:|:--:|:--:|:--:|
| 定義 | NS_ENUM | NS_CLOSED_ENUM |enum |
| Frozen | No | Yes | Yes |
| @unknown default: | 必要 | 不要 | 不要 |
@unknown default:には何を書くのが正解?
警告が出たときにFIXを押すと以下のコードが追加されるます。

乱暴かもしれませんが、変な状態でアプリが動作するよりは
fatalError()でクラッシュするのが正解なのだと思います。
余談ですが
-
@unknown default:って「余計なお世話」感が強い。
警告が出ないオプションが欲しいところ。 -
@unknown default:って書き方がなんかダサい。
もっとスマートな書き方は思いつかなかったのか?
switch!(unknown caseでクラッシュ)とか。
switch?(unknown caseを無視)とか。 -
Swiftでnon-frozen enumが書けないってことは、
当面Apple製Framework(UIKitとか)はObjective-Cで開発するって事なんでしょうね。

