Как сделать класс модели для словаря внутри массива в Swift? - PullRequest
0 голосов
/ 08 января 2019

Вот мой Json:

[ {
    "id": 6854,
    "name": "Laundry Iron",
    "images": [
      {
        "id": 6856,
        "src": "https://abcd.com/yzx/uploads/1750.jpg",
      }
    ], 

     } ]

как нам создать класс модели для получения "images": ["src": "String"] ?. Я хочу взять "src", который я пробовал делать как, но он не работает:

class ProductModel {

    var title: String?
    var regularPrice: Int?
    var salePrice: Int?
    var productDescroption: String?
    var imageUrl: [ImageUrl]?

    init(productJsonL: NSDictionary) {
        self.title = productJsonL["name"] as? String
        self.regularPrice = productJsonL["regular_price"] as? Int
        self.salePrice = productJsonL["sale_price"] as? Int
        self.productDescroption = productJsonL["description"] as? String
         //The problem is here ........
       //self.imageUrl = productJsonL["images"]![0]!["src"] as? String
        self.imageUrl = ImageUrl(imageUrlJson: (productJsonL["images"]![0] as? NSDictionary)!)

    }
}



class ImageUrl {

    var source: String?
    init(imageUrlJson: NSDictionary) {
        self.source = imageUrlJson["src"] as? String
    }

}

Пожалуйста, исправьте меня с помощью структуры, как я делал выше, чтобы я мог добавить все сразу в массив? Заранее спасибо !!

1 Ответ

0 голосов
/ 08 января 2019

Вам нужно Codable

struct Root: Codable {
    let id: Int
    let name: String
    let images: [Image]
}

struct Image: Codable {
    let id: Int
    let src: String    //  or let src: URL
}

do {

    let res = try JSONDecoder().decode([Root].self, from: data)
    print(res)

}
catch {

    print(error)
}
...