Как я мог молча игнорировать объекты, не декодируемые в списке с использованием протокола Ciftable Swift 4?

Есть ли способ декодировать JSON, представляющий собой список объектов, когда некоторые из этих объектов не могут быть правильно декодированы? Допустим, у меня есть enum с 2 возможными значениями foo а также bar но внезапно бэкэнд начинает возвращать другую возможную опцию для этого поля (скажем, other).

Глядя на пример ниже, первая часть в порядке. То, что я хотел, это иметь во второй части список, содержащий 1 элемент (foo), вместо nil,

import Foundation

enum Value: String, Codable {
    case foo
    case bar
}

struct Object: Codable {
    let value: Value
}

let dataList = "[{\"value\":\"foo\"}, {\"value\":\"bar\"}]".data(using: .utf8)!
let objectList = try? JSONDecoder().decode([Object].self, from: dataList) // [{foo}, {bar}]

let anotherDataList = "[{\"value\":\"foo\"}, {\"value\":\"other\"}]".data(using: .utf8)!
let anotherObjectList = try? JSONDecoder().decode([Object].self, from: anotherDataList) // nil

// is there a way to have this ^ as [{foo}] instead of nil?

0 ответов

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