将 NSCalendar.weekdaySymbols 索引翻译成 NSDateComponents.weekday

Translate NSCalendar.weekdaySymbols index to NSDateComponents.weekday

我正在为我的 iOS 应用程序编写一项功能,该功能涉及安排每周在一周中的特定几天重复本地通知。我想正确使用 NSCalendar API,这样我就不会假设我不应该做的事情。但是我在 NSCalendar 上没有看到关于一周有多少天的任何 属性。

我使用 weekdaySymbols 显示星期几,并让用户选择他们希望在哪几天收到通知。然后我根据那个安排本地通知。

真正的问题是:如何将 weekdaySymbols 中一天的索引转换为我为 weekday 赋予 NSDateComponents 的值?

这有点简化,但您可以将星期几视为属于公历,与实际使用的日历无关。这些日历主要控制 day/month/year 算术,星期几独立于每个日历的月数和长度的细节。

如果您接受它作为给定的,那么您只需要更正日历的 weekdaySymbols(索引从 0 到 6)和 NSDateComponents.weekday(a从 1 到 7 的值)。

extension DateComponents {     // NSDateComponents in Swift < 3
    func weekdaySymbol(in calendar: Calendar) -> String? {
        guard let weekday = self.weekday else { return nil }
        return calendar.weekdaySymbols[weekday - 1]
    }
}