Как я мог молча игнорировать объекты, не декодируемые в списке с использованием протокола 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?