ios - Swift-在UITableView中显示按日期排序的自定义对象数组

标签 ios uitableview sorting sections

我有一个充满自定义事件对象的数组。
每个事件都有一个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/

相关文章:

ios - App更新后如何唤醒?

ios - 如何快速获取设备的详细语言

iphone - UITableViewCell 分配问题 - 单元格不为零

angular - Angular 2中同时存在多个管道

java - android 在早期 API 版本中包含 API 9 功能

c - 使用 qsort 对 2D 数组进行排序

ios - 如何通过触摸单元格内的按钮快速编辑文本字段

ios - 我希望从 iPhone 浏览的用户可以选择只上传视频或图像,而不是同时上传

ios - 在 ViewController 中向 UITableView 添加数据/行。 swift

swift - Swift 中 "! "前缀的实际含义是什么?