JSONDecoder-解码的每个元素的Execute方法

时间:2018-07-21 18:11:04

标签: arrays swift decodable jsondecoder

我正在使用JSONDecoder将JSON解码为MyModel数组:

myModelArray : [MyModel] = try JSONDecoder().decode([MyModel].self, from: data)

一切正常,我得到了我的数组,但是我想在元素每次完成解码后为模型数组中的每个元素执行一个方法。 现在我正在这样做:

for city in myModelArray! {
    //Creating polygon 
    city.createPolygon()
}

它可以工作,但不是最佳方法,每当Decoder完成对数组一个元素的解码后,是否有一种方法可以执行?例如完成?

谢谢

1 个答案:

答案 0 :(得分:0)

感谢Joakim的回答,我只需要在这样的Decodable模型中通过覆盖 init(来自解码器:Decoder)来手动解码即可:

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

    property1 = try values.decode([String].self, forKey: .property1)
    property2 = try values.decode(String.self, forKey: .property2)

    //Calling my method
    getCityPolygon()
}