Swift enum with custom initializer loses rawValue initializer

后端 未结 6 1569
长发绾君心
长发绾君心 2021-01-30 12:07

I have tried to boil this issue down to its simplest form with the following.

Setup

Xcode Version 6.1.1 (6A2008a)

An enum defined in MyEnum.swift

6条回答
  •  渐次进展
    2021-01-30 12:39

    extension TemplateSlotType {
        init?(rawString: String) {
            // Check if string contains 'carrousel'
            if rawString.rangeOfString("carrousel") != nil {
                self.init(rawValue:"carrousel")
            } else {
                self.init(rawValue:rawString)
            }
        }
    }
    

    In your case this would result in the following extension:

    extension MyEnum {
        init?(string: String) {
            switch string.lowercaseString {
            case "zero": 
                self.init(rawValue:0)
            case "one": 
                self.init(rawValue:1)
            case "two":
                self.init(rawValue:2)
            default: 
                return nil
            }
        }
    }
    

提交回复
热议问题