如何用字典中的分组结构中的数据填充UITableView?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用字典中的分组结构中的数据填充UITableView?相关的知识,希望对你有一定的参考价值。

我有以下结构包含来自解析的JSON的数据。

struct callRailData {
var callDate: String
var userDetails = callData()
}

struct callData{
var callerName: String?
var callerNumber: String?
var callerCityName: String?
var callerCountryName: String?
var callerStateName: String?
var callAnsweredState: Bool?
var callDirection: String?
var callDuration: String?
var callRecordingURL: String?
var callRecordingPlayer: String?
var callSource: String?
var callCompanyName: String?
}

我需要在UITableView中显示这些数据,并将'callDate'作为节头。所以我在这个字典中对结构进行了分组:

var user = [callRailData]()

var sections = Dictionary<String, [callRailData]>()
sections = Dictionary(grouping: user, by: { $0.callDate }). 

我不知道如何在tableview中显示这些数据。如何从'sections'获取numberOfSections和numberOfRowsInSection。请帮助我成为Swift和ios开发的初学者。

答案

通常,我们使用数组作为tableview的数据源。从数组中提供numberOfRows =数组计数和“cellForRow”数据源对象。

另一答案

我认为你不需要像那样进行分组......就像那样希望它会起作用。

  override func numberOfSections(in tableView: UITableView) -> Int {
      return user.count
    }

它将根据您的用户数量制作部分。现在每个部分都有一行显示数据。

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
           return 1
        }



 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "your cell", for: indexPath) as! Your Cell class
         cell.callerNameLabel.text = user[indexpath.section].userdetails.callerName 
        return cell
    }

此func将设置您的第二个标题标题

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
       return user[section].callDate
    }

以上是关于如何用字典中的分组结构中的数据填充UITableView?的主要内容,如果未能解决你的问题,请参考以下文章

如何用 Ext.Net 数据库中的数据填充 GridPanel?

如何用应用商店中的新版本替换 iOS 应用中预先填充的核心数据?

如何用内存高效的数据结构替换大型 python 字典?

如何用存储过程填充表中的所有空值

如何用其他数据框的值填充缺失值

如何用生成器中的值填充 2D Python numpy 数组?