【问题标题】:Swift - Display array of custom objects with sections sorted by date in UITableViewSwift - 在 UITableView 中显示自定义对象数组,其中部分按日期排序
【发布时间】:2016-08-29 10:30:00
【问题描述】:

我有一个充满自定义事件对象的数组。 每个事件都有一个NSDate 对象。 现在我在一个大的部分中显示每个事件。 但我想要的是所有事件都应该按日期排序,每个日期都应该有自己的节标题。

将所有对象分类到不同部分的最佳和最快方法是什么。

我想创建一个带有子数组的主数组。每个子数组都是一个日期,因此我可以像 let section = bigarray[0] 这样访问不同的部分。

但这真的是完成这项任务最好、最快的方法吗? 谢谢。

【问题讨论】:

    标签: ios uitableview sorting sections


    【解决方案1】:

    首先,您可以创建一个Array<NSDate> 来保存所有日期。然后创建一个Dictionary<NSDate, Array<Event>>,在此词典中,您可以将事件分组到相应的数组中。最后使用Array<NSDate>获取section,在section中可以通过query key得到对应的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
    }
    

    【讨论】:

    • 没关系。我找到了对所有内容进行排序的答案...谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多