我正在开发我的第一个快速应用程序。这是一个简单的生日列表,它将生日存储到CoreData,其名称,出生日期(作为NSDate)并在表格视图中显示。
现在我尝试做的是将表格视图按天数排序到下一个生日。
我已经在表视图单元格中显示了“days-left”,通过计算下一个Birthday和每次加载table-view时的“days-left” - 就像这样:
let diffDateComponents = NSCalendar.currentCalendar().components([NSCalendarUnit.Day], fromDate: NSDate(), toDate: nextBirthDay, options: NSCalendarOptions.init(rawValue: 0))
我现在如何通过diffDateComponents对表视图进行排序?
答案 0 :(得分:0)
您可以在核心数据模型中添加其他键/行,描述出生日期与实际日期之间的差异。它可以在加载模型时更新。
将此键/行用作排序描述符。
答案 1 :(得分:0)
我认为你的表数据数组意味着NSDate
个对象的数组为var birthdays = [NSDate]()
。
然后我将NSDateComponents
数组声明为var daysLeftArray = [NSDateComponents]()
。然后将每个时差附加到数组中。
for date in birthdays{
let diffDateComponents = NSCalendar.currentCalendar().components([NSCalendarUnit.Day], fromDate: NSDate(), toDate: date, options: NSCalendarOptions.init(rawValue: 0))
daysLeftArray.append(diffDateComponents)
}
现在按如下方式对数组进行排序:
daysLeftArray.sortInPlace({(first, second) in
first.day < second.day // assending order. Put '>' for decending order
})