[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 default
non-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.)