如何根据API在TableView中显示数据

时间:2019-02-07 08:33:12

标签: swift tableview

我有tableView

class DataModel: Mappable {

    var name: String = ""

    var geoArray = [DataModel]()

    required init?(map: Map) {

    }

    // Mappable
    func mapping(map: Map) {

        name <- map["name"]


        dataFetched : for i in 0...100{

            array <- map["Add\(i)"]


            if  array.count > 0{

                break dataFetched
            }

        }

    }

}

viewController中:-

var ListArray = [DataModel]()

  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return self.ListArray.count

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)


    cell.textLabel?.text = self.ListArray[indexPath.row].name
    return cell
}

我的api是这种格式:-

"Add": [{"name":"Topics","Add1":[{"name":"Subjects","Add2":[{"name":"Biology","Add3":[{and so.......}]}]}]}]

所以我需要输出为:-

 Topics
 Subjects
 Biology
 ......

这种方式我需要在tableview中显示。需要做哪些更改。如何获得解决方案

我使用api将数据传递为:-

    func  getData()  {

    let url = "example.com"
    print(url)

    self.newtworkHelper.makeAPIRequestget(url: url, needHeaders:true, successCompletion: { (data, isError, isNetworkError,isGoToLogin) in

        print(data)
        print(isError)
        print(isNetworkError)
        print(isGoToLogin)

        if isNetworkError{

            print("network error")

            return
        }

        if isGoToLogin{

            print("isgologin")

            return
        }

        if isError{

            print("error")
            return
        }

        if let response = data as? [String:Any]{

        if let result = response["result"] as? [String:Any]{

            if let Add = result["Add"] as? [[String : Any]]{

                for request in Add {

                    self.ListArray.append(DataModel(JSON: request)!)


                }
            }

          }}

        self.tableview.reloadData()

    })

}

1 个答案:

答案 0 :(得分:0)

  1. 创建数据模型类 我认为您已经做到了
  2. 创建模型数组 您也这样做了
  3. 解析Json,初始化数据,将实例添加到您的数组中 我看不到您如何解析数据以及如何初始化数据模型实例

  4. 使用TableViewDataSourceDelegate初始化您的表数据,并使用您的数组 在这一点上,我实际上更希望看到您的单元格模型,我不知道您如何对其进行自定义

通常是我的解决方案。希望对您有所帮助。