Program Tip

열거 형 케이스 '…'은 '…'유형의 멤버가 아닙니다.

programtip 2021. 1. 10. 19:27
반응형

열거 형 케이스 '…'은 '…'유형의 멤버가 아닙니다.


열거 형이 있습니다.

enum State {
    case FullOpen
    case HalfOpen
    case Closed
}

그리고이 코드 :

var stateForConversionView: State!
...


var previousState: State!

if true {
    previousState = stateForConversionView!
    switch previousState {
    case .FullOpen:
        stateForConversionView = .HalfOpen
    case .HalfOpen:
        stateForConversionView = .FullOpen
    case .Closed:
        stateForConversionView = .HalfOpen
    default:
        break
    }
}

각 switch 문에 오류가 있습니다.

Enum case 'FullOpen' not found in type 'State!'
Enum case 'HalfOpen' not found in type 'State!'
Enum case 'Closed' not found in type 'State!'

왜 그런지 정말 모르겠어요. 누군가 제발 설명해 주시겠습니까?


이렇게하면 잘 작동합니다.

if true {
    previousState = stateForConversionView

    switch previousState! {
    case .FullOpen:
        stateForConversionView = .HalfOpen
    case .HalfOpen:
        stateForConversionView = .FullOpen
    case .Closed:
        stateForConversionView = .HalfOpen
    default:
        break
    }
}

추가해야합니다 !.

자세한 내용은 THIS를 참조하십시오 .


조건 변수가 "상태"의 다른 유형에있는 경우. rawValue 속성을 사용해야합니다.

var previousState:String
previousState = stateForConversionView
 switch previousState {
        case State.FullOpen.rawValue:
            stateForConversionView = .HalfOpen
        case State.HalfOpen.rawValue:
            stateForConversionView = .FullOpen
        case State.Closed.rawValue:
            stateForConversionView = .HalfOpen
        default:break

        }

임시 변수 ( previousState) 를 만들 필요가 없습니다 . 열거 형으로 사용중인 속성을 풀면됩니다.

if true {
    switch stateForConversionView! {
    case .FullOpen:
        stateForConversionView = .HalfOpen
    case .HalfOpen:
        stateForConversionView = .FullOpen
    case .Closed:
        stateForConversionView = .HalfOpen
    default:
        break
    }
}

참조 URL : https://stackoverflow.com/questions/31085936/enum-case-is-not-a-member-of-type

반응형