所以我有一个使用结构创建的数据数组,例如:
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进行排序。
我似乎无法解决这个问题。
任何想法都将不胜感激。
答案 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