Извлекать и хранить данные в dataModel из массива вложенного массива - PullRequest
0 голосов
/ 24 октября 2019

Я застрял на разборе Json. Я проверил еще много примеров. т.е. - Первый Второй Третий Четвертый Можете ли вы помочь кому-нибудь?

Моя модель ниже:

public struct Item {var name: String var detail: String

public init(name: String, detail: String) {
    self.name = name
    self.detail = detail
}}

public struct Section {var name: String var items: [Item] var свернут: Bool

public init(name: String, items: [Item], collapsed: Bool = false) {
    self.name = name
    self.items = items
    self.collapsed = collapsed
}}

и разбор json как этот

    guard let path = Bundle.main.path(forResource: "AllMenu", ofType: "json") else { return }
    let url = URL(fileURLWithPath: path)
    do {
        let data = try? Data(contentsOf: url)
        let json = try? JSONSerialization.jsonObject(with: data!, options: .mutableContainers)

        guard let menuDict = json as? Array<Any> else { return }
        for arr in menuDict{
            let sectionName = (arr as AnyObject).value(forKey: "name")
            let cellName  = (arr as? AnyObject)?.value(forKey: "sub_category")
            let cellArray: Array = (cellName as? Array<Any>)!
            var existingItems = data["items"] as? [[String: Any]] ?? [[String: Any]]()

            for indexs in cellArray{

                let CeName = (indexs as AnyObject).value(forKey: "name")
                let displayName = (indexs as AnyObject).value(forKey: "display_name")
                self.sections.append(index as! Section)

            }
            print(sectionName as Any)

            print(cellName as Any)
        }
        print(" ")
    }

Данные json такие:

[{"name": "rings", "подкатегория": [{*

               "name": "engagement",
               "display_name": "Engagement"
               },
               {

               "name": "band-couple band",
               "display_name": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed scelerisque aliquet arcu, sed placerat turpis. Sed vulputate finibus nisi, nec gravida turpis consectetur quis. Nullam quis vestibulum ex. Integer lacinia quam sed rutrum tempus. Sed quis metus mollis, euismod ipsum in, vulputate turpis. Fusce suscipit ligula in efficitur interdum. Sed ante velit, vulputate nec nibh commodo, tempus molestie eros. Etiam consequat enim nisi, a mollis nisi gravida et. Fusce scelerisque ex vitae turpis fermentum facilisis."
               },
               {

               "name": "Navaratnam+Collection",
               "display_name": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed scelerisque aliquet arcu, sed placerat turpis."
               },
               {

               "name": "cocktail",
               "display_name": "Lorem ipsum dolor sit amet"
               },
               {

               "name": "below+15000",
               "display_name": "Under 15,000/-"
               },
               {

               "name": "hearts",
               "display_name": "Heart Rings"
               },
               {

               "name": "halo",
               "display_name": "Halo Rings"
               },
               {
               "name": "view all",
               "display_name": "View All"
               }
               ]}]
...