File tree Expand file tree Collapse file tree
AnimalsApp/AnimalsApp/Models Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -32,7 +32,14 @@ struct Animal: Codable {
3232 case image
3333 case createdAt = " created_at "
3434 case updatedAt = " updated_at "
35+
36+ // init(from decoder: Decoder) throws {
37+ // let label = try decoder.singleValueContainer().decode(String.self)
38+ // self = CodingKeys(rawValue: label) ?? .unsupported
39+ // }
3540 }
41+
42+
3643}
3744
3845extension Animal {
@@ -44,3 +51,25 @@ extension Animal {
4451 return imageURL
4552 }
4653}
54+
55+ extension Animal {
56+ init ( from decoder: Decoder ) throws {
57+ let values = try decoder. container ( keyedBy: CodingKeys . self)
58+
59+ if let resultInt = try ? values. decodeIfPresent ( Int . self, forKey: . age) {
60+ age = resultInt
61+ } else {
62+ if let resultString = try ? values. decodeIfPresent ( String . self, forKey: . age) {
63+ age = Int ( resultString) ?? 0
64+ }
65+ }
66+
67+ id = try values. decode ( String . self, forKey: . id)
68+ name = try values. decodeIfPresent ( String . self, forKey: . name)
69+ description = try values. decodeIfPresent ( String . self, forKey: . description)
70+ species = try values. decodeIfPresent ( String . self, forKey: . species)
71+ image = try values. decodeIfPresent ( String . self, forKey: . image)
72+ createdAt = try values. decode ( String . self, forKey: . createdAt)
73+ updatedAt = try values. decode ( String . self, forKey: . updatedAt)
74+ }
75+ }
You can’t perform that action at this time.
0 commit comments