Подтвердите enum с помощью декодируемого протокола

Есть структура со свойством типа enum:

struct TestStruct: Decodable {
    let id: Int
    let name: String
    let enumVar: SomeEnum
}

enum SomeEnum: String {
    case one = "1099"
    case two = "9090"
    case three = "878"
}

Как подтвердить перечисление в Decodable протокол для анализа элементов структуры TestStruct?

Я попробовал следующий путь, но это не сработало:

extension SomeEnum: Decodable {
    enum Key: String, CodingKey {
        case one = "1099"
        case two = "9090"
        case three = "878"
    }

    init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: Key.self)

        if let one = try container.decodeIfPresent(Swifter.self, forKey: .one) {
            self = .one
        } else if let two = try container.decodeIfPresent(Swifter.self, forKey: .two) {
            self = .two
        } else if let twitter = try container.decodeIfPresent(Swifter.self, forKey: .three) {
            self = .three
        } else {
            self = .three
        }
    }

0 ответов

Другие вопросы по тегам