将 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]
}
}
我正在为我的 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]
}
}