我有一个充满自定义事件对象的数组。
每个事件都有一个NSDate
对象。
现在,我将大部分 Activity 显示在一个大区域中。
但是我想要的是所有事件都应该按日期排序,每个日期都应该有自己的节头。
将所有对象分类到不同部分的最佳和最快方法是什么?
我考虑过用子数组创建一个主数组。每个子数组都是一个日期,因此我可以访问let section = bigarray[0]
这样的不同部分。
但这真的是执行此任务的最好,最快的方法吗?
谢谢。
最佳答案
首先,您可以创建一个Array<NSDate>
来保存所有日期。然后创建一个Dictionary<NSDate, Array<Event>>
,您可以在此Dictionary中将事件分组到相应的Array中。最后使用Array<NSDate>
来获取部分,在该部分中您可以通过查询键获取相应的Array<Event>
。
class Event: NSObject {
var date: NSDate?
}
var events: Array<Event> = Array()
for i in 1...100 {
let event: Event = Event()
event.date = NSDate.init(timeIntervalSinceNow: Double(i*86400/2))
events.append(event)
}
var dates: Array<NSDate> = Array()
dates.append(events.first!.date!)
for event in events {
var sameDay: Bool = false
for date in dates {
if NSCalendar.currentCalendar().isDate(date, inSameDayAsDate:event.date!) {
sameDay = true
break
}
}
if !sameDay {
dates.append(event.date!)
}
}
var grouped: Dictionary<NSDate, Array<Event>> = Dictionary()
for date in dates {
var dateEvents: Array<Event> = Array()
for event in events {
if NSCalendar.currentCalendar().isDate(event.date!, inSameDayAsDate: date) {
dateEvents.append(event)
}
}
grouped[date] = dateEvents
}
关于ios - Swift-在UITableView中显示按日期排序的自定义对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39204033/