You should decode your object manually:
struct Data: Codable {
let name: String?
let dataArray: [User]
enum Keys: String, CodingKey {
case name
case dataArray
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: Keys.self)
name = try? container.decode(String.self, forKey: .name)
dataArray = (try? container.decode(User, forKey: . dataArray)) ?? []
}
}
Or you can create a wrapper :
struct Data: Codable {
let name: String?
private let _dataArray: [User]?
var dataArray : [User] {
get {
return _dataArray ?? []
}
}
enum Keys: String, CodingKey {
case name
case dataArray
}
}