Project/HiddenGem

🔨 Raw value for enum case must be a literal 문제 해결!

밤새는 탐험가89 2025. 6. 3. 09:32

❗️문제 원인

enum SheetPosition: CGFloat, CaseIterable {
    case min = 150
    case mid = UIScreen.main.bounds.height * 0.4  // ❌ 이 줄
    case max = UIScreen.main.bounds.height * 0.85 // ❌ 이 줄
}

 

❗️ 에러 메시지:

Raw value for enum case must be a literal
→ enum의 raw value는 상수 리터럴만 가능해.
UIScreen.main.bounds.height는 런타임에 계산되는 값이라 불가능해.

 

✅ 해결 방법

런타임 계산이 필요한 값을 enum 안에서 computed property로 처리하는 구조로 변경

enum SheetPosition: CaseIterable {
    case min
    case mid
    case max
    
    var height: CGFloat {
        switch self {
        case .min:
            return 150
        case .mid:
            return UIScreen.main.bounds.height * 0.4
        case .max:
            return UIScreen.main.bounds.height * 0.85
        }
    }
}