swif 嵌套数据自带解析

			首先定义  三个类型  进行数据 之间的 操作



    var jsonDic:NSDictionary = [:]
    var arr = [String]()
    var gmArr:NSMutableArray = []

下面是具体实现 两种表格样式(demo)

 var tbv:UITableView?
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        let path = Bundle.main.path(forResource: "discover", ofType: "json")
        let url = URL(fileURLWithPath: path!)
        // 带throws的方法需要抛异常
        do {
        
            let data = try Data(contentsOf: url)
            let jsonData:Any = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers)
            jsonDic = jsonData as! NSDictionary
            
//            print(jsonDic)
            
           // arr = (jsonDic.allKeys as NSArray) as! [String]
            arr = ["group1","group2","group3","group4"];
            for k in arr {
               
                let gm:GroupModel = GroupModel(title:k, arr: jsonDic.object(forKey: k) as! NSMutableArray)
                print(gm.arr)
                let carr:NSMutableArray = []
                for j in gm.arr{
                    
                    let i:NSDictionary = j as! NSDictionary
                    
                    let cm = CellModel(img:i.object(forKey: "img") as! String, title: i.object(forKey: "title") as! String, detail: i.object(forKey: "detailtitle") as! String, img2: i.object(forKey: "img2") as! String, bool: i.object(forKey: "bool") as! String, type: i.object(forKey: "type") as! String)
                  //  print(cm.img)
                    carr.add(cm)
                }
                gm.arr.removeAllObjects()
//                print("----\(gm.arr)")
                gm.arr = carr
//                print("----\(gm.arr)")
                let str:CellModel = gm.arr[0] as! CellModel
//                print("----\(str.img)")
                gmArr.add(gm)
            }
//            print("====\(gmArr)")
            self.tbv?.reloadData()
        } catch let error as Error? {
            print("读取本地数据出现错误!",error!)
        }
        
        tbv = UITableView(frame: self.view.frame, style: .grouped)
        tbv?.delegate = self
        tbv?.dataSource = self
        
        tbv?.register(UINib(nibName: "FirstCell", bundle: nil), forCellReuseIdentifier: "fcell")
        tbv?.register(UINib(nibName: "SecondCell", bundle: nil), forCellReuseIdentifier: "scell")
        view?.addSubview(tbv!)
        
    }```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值