对关键字为日期字符串的字典进行排序

时间:2019-01-04 13:38:33

标签: ios swift

我有字典。每个键都是“ dd-mm-yyyy”格式的日期。值是对象数组。我想按日期对字典进行排序,以便在将每个日期显示为表格视图中的一部分时按时间顺序。

  let sortedDict = self?.entriesDict.sorted(by: { $0.key > $1.key })

我认为如果我颠倒日期格式,但是上面没有返回快速的字典(我认为它返回的是NSDictionary),上述方法可能会起作用。

1 个答案:

答案 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
}