У меня есть следующее перечисление:
enum ExampleEnum {
case one
case two
case three
case four
}
И следующее определение свойства:
var exampleProperty: ExampleEnum!
до swift 4.2 Я использовал следующую инструкцию switch:
switch self.exampleProperty {
case .one:
print("case one")
case .two:
print("case two")
case .three:
print("case three")
case .four:
print("case four")
default:
break
}
С момента перехода на swift 4.2 этот оператор switch дает мне ошибку:
Enum case 'one' not found in type 'ExampleEnum?'
Я нахожу это странным, потому что я четко определил тип с восклицательным знаком, чтобы неявно развернуть необязательное.Однако, похоже, этого не происходит.Чтобы устранить ошибку, мне нужно выполнить переключение следующим образом:
switch self.exampleProperty! {
case .one:
print("case one")
case .two:
print("case two")
case .three:
print("case three")
case .four:
print("case four")
}
То, что я сделал выше, снова развернуло переменную exampleProperty, даже если определение неявно развернуто, а также удалило значение по умолчанию изswitch.
Просто интересно, почему это изменение в swift 4.2?Это изменение в операторе switch или почему требуется повторное развертывание.Кажется излишним?