将NSCalendar.weekdaySymbols索引转换为NSDateComponents.weekday
我正在编写iOS应用程序的一项功能,它涉及在每周的特定几天安排每周重复本地通知。我想正确使用NSCalendar
API,所以我不认为我不应该这样做。但是我没有看到NSCalendar
上一周有多少天有任何财产。将NSCalendar.weekdaySymbols索引转换为NSDateComponents.weekday
我使用weekdaySymbols
显示本周的几天,并让用户选择他们想要通知的日期。然后我基于此安排本地通知。
真正的问题是:如何将一天中的weekdaySymbols
索引转换为NSDateComponents
的weekday
值?
这有点简化,但您可以将星期几认为属于公历,而与实际使用的日历无关。这些日历在很大程度上管理日/月/年算术,一周中的日子独立于每个日历的数量和月数。
如果您接受为给定的,那么您只需要更正日历的weekdaySymbols
(索引从0到6)和NSDateComponents.weekday
(值从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]
}
}
太棒了。你的意思是让'weekday'成为'func weekdaySymbol'的一个参数吗? –
不,它是'DateComponents'的属性 - 我会添加'self',所以它更清晰。 –
啊,谢谢。我应该抓住这一点 - 毕竟,财产是我问题的一个组成部分。但我并没有很快就做了很多,我不习惯于指没有“自我”的房产。 –
它取决于日历标识符。一个“格里历”的日历一周有7天。 – vadian
@vadian什么是不是日历?什么是告诉设备是否设置为其中一个日历的最佳方式? –
不幸的是,我不熟悉其他日历比格利高里。 – vadian