所以我有一个用结构体创建的数据数组,例如:
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
数组排列到字典中,然后按该日期对字典进行排序的建议。我似乎无法让它工作。
任何想法将不胜感激。
我建议你将结构排列成矩阵[[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