gpt4 book ai didi

swift - 如何根据 SwiftUI 中的日期将事件分成列表的不同部分?

转载 作者:行者123 更新时间:2023-11-28 13:27:17 30 4
gpt4 key购买 nike

我正在使用提供 2019 年所有美国假期的 JSON 数据。这些数据让我可以访问名称、描述和日期。我成功导入了所有内容,但想根据月份分节列出假期。

在 SwiftUI 中,代码将是:List -> ForEach -> Section -> ForEach -> ListRow,但我不确定如何说日期的月份匹配是否将它们放在同一部分中。我可能会以错误的方式处理它......

allHolidays 代表我拥有的假期数据:

List {
ForEach(?) { month in
Section(header: Text("Month goes here...")) {
ForEach(self.allHolidays, id: \.name) { holiday in
HolidayRowView(name: holiday.name, date: holiday.date)
}
}
}
}

我列出了所有假期,日期在它们下面。我无法让它们分成不同的部分。

这是来自 Calendarific 的 JSON 数据的片段:

{
"meta": {
"code": 200
},
"response": {
"holidays": [
{
"name": "Name of holiday goes here",
"description": "Description of holiday goes here",
"date": {
"iso": "2018-12-31",
"datetime": {
"year": 2018,
"month": 12,
"day": 31
}
},
"type": [
"Type of Observance goes here"
]
}
]
}
}

最佳答案

在您的第一个 ForEach 中,您需要遍历所有月份。 Calendar 将为您提供月份的本地化名称列表,因此您可以将其用作您的部分标题。在您内部的 ForEach 中,您需要遍历给定月份(部分标题)中发生的假期,因此您必须过滤您的列表:

private let calendar = Calendar.current

var body: some View {
List {
ForEach(1...12, id: \.self) { month in
Section(header: Text(calendar.monthSymbols[month-1])) {
ForEach(self.allHolidays.filter({
calendar.component(.month, from: $0.date) == month }),
id: \.name) { holiday in
HolidayRowView(name: holiday.name,
date: holiday.date)
}
}
}
}
}

关于swift - 如何根据 SwiftUI 中的日期将事件分成列表的不同部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58142962/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com