将NSCalendar.weekdaySymbols索引转换为NSDateComponents.weekday

时间:2016-11-22 18:07:06

标签: ios nscalendar

我正在编写我的iOS应用程序的一项功能,该功能涉及在一周中的特定日期安排每周重复本地通知。我想正确使用NSCalendar API,所以我不会假设我不应该做的事情。但我在NSCalendar上看不到有关一周内有多少天的任何财产。

我使用weekdaySymbols显示一周中的几天,并让用户选择他们想要通知的日期。然后我根据它调度本地通知。

真正的问题是:如何将weekdaySymbols中的日期索引转换为NSDateComponents weekdayif let doc = Kanna.HTML(html: myHTMLString, encoding: String.Encoding.utf8) { var bodyNode = doc.body if let inputNodes = bodyNode?.xpath("//a/@href[ends-with(.,'.txt')]") { for node in inputNodes { print(node.content) } } } 的值?

1 个答案:

答案 0 :(得分:1)

这有点简化,但您可以将星期几视为属于公历,与实际使用的日历无关。这些日历主要用于管理日/月/年算术,一周的日期与每个日历的数量和月份的长度无关。

如果您接受这一点,那么您只需要更正日历的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]
    }
}