我有字典。每个键都是“ dd-mm-yyyy”格式的日期。值是对象数组。我想按日期对字典进行排序,以便在将每个日期显示为表格视图中的一部分时按时间顺序。
let sortedDict = self?.entriesDict.sorted(by: { $0.key > $1.key })
我认为如果我颠倒日期格式,但是上面没有返回快速的字典(我认为它返回的是NSDictionary),上述方法可能会起作用。
答案 0 :(得分:0)
根据定义,Dictionary
是未排序的集合(NSDictionary
也是)。如果您在sorted
上调用Dictionary
,则返回值将为Array<(Key,Value)>
类型,即字典中键-值对的数组,表示为元组。
要实现您的目标并将Dictionary
用作UITableViewDataSource
,您应该做的是保留字典键的排序数组,并在数据源方法中,从该排序键中检索正确的键数组,然后使用键从原始字典中检索值。
我还建议将字典键存储为Date
对象而不是日期字符串。
在您的问题中没有更多背景信息,这大致就是您应该做的事情:
let sortedKeys = entriesDict.keys.sorted()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return sortedKeys.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "yourCellId", for: indexPath)
let entryKey = sortedKeys[indexPath.row]
cell.textLabel?.text = entriesDict[entryKey]
return cell
}