Как присвоить rawValue перечисления переменной с помощью ObjectMapper?

Здравствуйте, я использую Object Mapper с Alamofire в Swift и пытаюсь сопоставить необработанное значение enum с реальным Enum.

Вот мое перечисление, а также код, который я пытаюсь использовать в функции mapping. Не могли бы вы помочь мне, что передать в качестве аргумента EnumTransform или как изменить код? Я знаю, что могу прочитать значение как строку и использовать LevelType(rawValue: stringValue).

Заранее спасибо.

enum LevelType : String {
    case NEW = "NEW"
    case UPDATE = "UPDATE"
}

func mapping(map: Map) {
    typeEnum <- (map[“type”], EnumTransformable(???) )
}

person Radim Halfar    schedule 05.01.2016    source источник
comment
Не требуется писать случай NEW = NEW. NEW будет значением по умолчанию (такое же, как имя случая). enum LevelType : String { case NEW, UPDATE} будет таким же   -  person Bohdan Savych    schedule 23.03.2017


Ответы (2)


Вам вообще не нужно передавать аргумент. Все, что вам нужно сделать, это указать тип перечисления в качестве универсального аргумента, и ObjectMapper позаботится обо всех процедурах инициализации перечисления.

 typeEnum <- (map["type"],EnumTransform<LevelType>())
person Zell B.    schedule 05.01.2016
comment
Я сделал то же самое, что было предложено здесь, но я получаю сообщение об ошибке: двоичный оператор ‹- не может быть применен к строке и (map, enumTranform‹LevelType›()) - person anamika41; 21.07.2017
comment
Вам нужно объявить тип enum, var typeEnum: LevelType! - person Thein; 21.11.2017

Просто выполнение прямой карты работало нормально для меня, пока мое перечисление было объявлено как тип String.

typeEnum <- map["type"]
person Swindler    schedule 17.10.2018