我需要将数组中的数据排序为UITableView节,其中日期为节标题,任意日期为“ Today”等今天的日期等

时间:2019-03-25 13:15:25

标签: swift uitableview date struct

所以我有一个使用结构创建的数据数组,例如:

struct Struct {
  let id = UUID()
  let name: String
  let date: Date
  let amount: Float
}
extension Struct {
  init(name: String, amount: Float) {
    self.name = name
    self.date = Date()
    self.amount = amount
  }
}

然后将其用于创建结构数组,例如:

var structs = [Struct]()
let name = ["struct1", "struct2", "struct3"]
let amount = [1, 2, 3]

let structsCount = name.count
for i in 0..<structsCount {
  structs.append(Struct(name: name[i], amount: Float(amount[i])))
}

这仅用于虚拟数据,因此我知道该日期将始终为当前日期。 我看到了一些建议,可以使用date属性将structs数组排列成Dictionary,然后按该日期对Dictionary进行排序。 我似乎无法解决这个问题。

任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我建议您将结构排列到矩阵[[Struct]]中,这样您将拥有下一个数组[[Struct(name: 1, date: 20-10-2019, amount: 1), Struct(name: 2, date: 20-10-2019, amount: 2)], [Struct(name: 3, date: 20-10-2019, amount: 3)], ...]

然后您可以使用它来填充UITableView

您可以使用下面的代码

//Since Set contains unique values, you will get all dates
let dates = Set(structs.map { $0.date })
var resultStructs: [[Struct]] = []
for date in dates {
    var array: [Struct] = []
    for element in structs {
        if date == element.date {
            array.append(element)
        }
    }
    resultStructs.append(array)
}

现在resultStructs将包含按日期排列的数组[[Struct]]。对其进行排序以获得正确的顺序并填充UITableView