gpt4 book ai didi

ios - 为 UITableView 部分构建数据结构

转载 作者:行者123 更新时间:2023-11-28 08:45:04 25 4
gpt4 key购买 nike

我想在 UITableView 中按日期部分组织聚会

我有一系列聚会

class Meetup {
var title: String
var date: String
}

还有一个聚会部分结构

struct MeetupSection {
var date: String
var meetups: [Meetup]

init(dateString: String, meetupArray: [Meetup]) {
date = dateString
meetups = meetupArray
}
}

还有一种算法,它构建的部分多于应有的部分。

func buildDateMeetupDict(meetups: [Meetup]) -> [MeetupSection] {

var meetupSections = [MeetupSection]()

for meetup in meetups {
if meetupSections.isEmpty {
let newMeetupSection = MeetupSection(dateString: meetup.day, meetupArray: [meetup])
meetupSections.append(newMeetupSection)
} else {
for var meetupSection in meetupSections {
if meetup.day == meetupSection.date {
meetupSection.meetups.append(meetup)
} else {
let newMeetupSection = MeetupSection(dateString: meetup.day, meetupArray: [meetup])
meetupSections.append(newMeetupSection)
}
}
}
}
return meetupSections
}

有什么想法吗?

最佳答案

编辑:我意识到您的部分将按日期显示,因此不需要解析,您可以简单地检查该特定日期是否已经有自己的部分。

您必须稍微调整一下以满足您的需要,但基本上从单个日期字符串中解析出月份和年份并将它们记录为单独的变量。整个数组按日期排序。检查每个日期以查看其月份/年份是否已经有一个部分。如果是,请将其添加到该部分。如果没有,请创建一个新部分。

meetups.sortInPlace { $0.backwardDate < $1.backwardDate }

var tableViewSections = [MeetupSection]()

let months = [01: "January", 02: "February", 03 : "March", 04 : "April", 05 : "May", 06 : "June", 07 : "July", 08 : "August", 09 : "September", 10 : "October", 11 : "November", 12 : "December"]

var previousMonth = -1

var previousYear = -1

for meetup in meetups {

if (meetup.year != previousYear || meetup.month != previousMonth) {

var sectionHeading: String

if meetup.month != 0 {
sectionHeading = months[meetup.month]!
}
else {
sectionHeading = ""
}

tableViewSections.append(MeetupSection(date, meetups: [Meetups])

previousYear = meetup.year
previousMonth = meetup.month

for var section in tableViewSections {
if section.month == meetup.month && section.year == meetup.year {

section.dates.append(meetup)
}
}

}

return tableViewSections

关于ios - 为 UITableView 部分构建数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35538889/

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