Swift中的NSSortDescriptor - 按下一天的生日排序

时间:2016-03-20 10:29:18

标签: ios swift core-data

我正在开发我的第一个快速应用程序。这是一个简单的生日列表,它将生日存储到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对表视图进行排序?

2 个答案:

答案 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
})