In Swift, is it possible to convert a string to an enum?

后端 未结 8 981
[愿得一人]
[愿得一人] 2020-12-14 05:17

If I have an enum with the cases a,b,c,d is it possible for me to cast the string \"a\" as the enum?

8条回答
  •  忘掉有多难
    2020-12-14 05:46

    For Int enum and their String representation, I declare enum as follows:

    enum OrderState: Int16, CustomStringConvertible {
    
        case waiting = 1
        case inKitchen = 2
        case ready = 3
    
        var description: String {
            switch self {
            case .waiting:
                return "Waiting"
            case .inKitchen:
                return "InKitchen"
            case .ready:
                return "Ready"
            }
        }
    
        static func initialize(stringValue: String)-> OrderState? {
            switch stringValue {
            case OrderState.waiting.description:
                return OrderState.waiting
            case OrderState.inKitchen.description:
                return OrderState.inKitchen
            case OrderState.ready.description:
                return OrderState.ready
    
            default:
                return nil
            }
        }
    }
    

    Usage:

    order.orderState = OrderState.waiting.rawValue
    
    let orderState = OrderState.init(rawValue: order.orderState)
    let orderStateStr = orderState?.description ?? ""
    print("orderStateStr = \(orderStateStr)")
    

提交回复
热议问题