代码之家  ›  专栏  ›  技术社区  ›  Ayush Agrawal

我想在表视图中显示所有api数据。它只显示api的第一个dictionary元素

  •  1
  • Ayush Agrawal  · 技术社区  · 6 年前

    我通过api获取数据并将其保存到init中。当我将此数据显示到表视图中时,它只显示dictionary的第一个值。我想在我的表视图中显示dictionary的所有值。

    类别:

    class FetchedDeparment
    {
        var depttName: String
        var createdDate: String
    
        init(depttName: String, createdDate: String) {
    
            self.depttName = depttName
            self.createdDate = createdDate
        }
    }
    

    正在从api获取数据并将其保存到init。

    var fetchedDepttData = [FetchedDeparment]()
    fetchedDepttData = []
    
    self.arrDeptt = json["departments"] as! [[String : Any]]
    print(self.arrDeptt)
    
    for eachDepartment in json["departments"]!
    {
        let eachData = eachDepartment as! [String: Any]
        let depttName = eachData["name"] as! String
        let createdDate = eachData["created_at"] as! String
    
        self.fetchedDepttData.append(FetchedDeparment.init(depttName: depttName, createdDate: createdDate))
    }
    self.tableView.reloadData()
    

    表格视图: 这就是我想显示所有数据的地方。

    func numberOfSections(in tableView: UITableView) -> Int {
            return fetchedDepttData.count
        }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return 1
        }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "DepartmentCell", for: indexPath) as! ShowDepttTVCell
    
            cell.lblDepttName.text = fetchedDepttData[indexPath.row].depttName
            cell.lblCreatedDate.text = fetchedDepttData[indexPath.row].createdDate
    
            return cell
        }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Rahul Chopra    6 年前

    您的代码正常。必须将行替换为节,因为在numberOfSection表视图数据源方法中,数组被计算在内。

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "DepartmentCell", for: indexPath) as! ShowDepttTVCell
    
            cell.lblDepttName.text = fetchedDepttData[indexPath.section].depttName
            cell.lblCreatedDate.text = fetchedDepttData[indexPath.section].createdDate
    
            return cell
        }
    
        2
  •  1
  •   user9606220 user9606220    6 年前

    你就是这样做的 第一 1、var DataYouWant:[[字符串:任意]]=[字符串:任意] 这就是如何使用alamofire提取数据 2.

    func demoApi() {
            Alamofire.request("https://jsonplaceholder.typicode.com/posts", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in
    
                switch(response.result) {
    
                case .success(_):
                    guard let json = response.result.value as! [[String:Any]]? else{ return}
                    print("Response \(json)")
                    for item in json {
    
                        self.DataYouWant.append(item)
    
                        // if let title = item["title"] as? String {
                        //   self.titleArray.append(title)
                        // }
    
                    }
                    if !self.getAllDetail.isEmpty{
                        DispatchQueue.main.async {
                             self.tableView.reloadData()
                        }
                    }
                    break
    
                case .failure(_):
                    print("Error")
                    break
    
                }
            }
    
    }
    
    1. 这就是numberOfSections的样子 func numberOfSections(在tableView中:UITableView)->内景{ 返回1 }

    2. 然后

      func tableView(\utableview:UITableView,numberofrowsinssection节:Int)->内景{ 返回所需数据。计数 }

    如果你还有其他问题,请告诉我