[Swift] Handle unknown values using "@unknown default"가 발견되었습니다.
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 defaultnon-frozen enum란,Objective-C 로 기술된 enum 로 NS_ENUM 로 정의되고 있습니다.향후
case가 추가될 수 있음을 나타냅니다.언어
Objective-C
Objective-C
Swift
정의
NS_ENUM
NS_CLOSED_ENUM
enum
Frozen
아니
예
예
@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 로 개발한다고 하는 일이지요. Reference
이 문제에 관하여([Swift] Handle unknown values using "@unknown default"가 발견되었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Hackenbacker/items/8bfa99afa2d850e44531텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)