2016-11-22 4 views
1

Я пишу функцию моего приложения iOS, которое предусматривает планирование еженедельных повторных локальных уведомлений в определенные дни недели. Я бы хотел правильно использовать API NSCalendar, поэтому я не предполагаю, что я не должен. Но я не вижу никакой собственности на NSCalendar о том, сколько дней есть в неделю.Перевести NSCalendar.weekdaySymbols index на NSDateComponents.weekday

Я показываю дни недели, используя weekdaySymbols, и позволяю пользователю выбирать, в какие дни они хотят получать уведомления. Затем я планирую локальные уведомления на основе этого.

Реальный вопрос: Как перевести индекс один день в weekdaySymbols в значение Я даю NSDateComponents для weekday?

+0

Это зависит от идентификатора календаря. Календарь «gregorian» всегда 7 дней в неделю. – vadian

+0

@vadian Что такое календарь, который нет? И каков наилучший способ узнать, установлено ли устройство на один из этих календарей? –

+0

К сожалению, я не знаком с другими календарями, чем с gregorian. – vadian

ответ

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] 
    } 
} 
+0

Фантастический. Вы имели в виду сделать 'weekday' аргументом' func weekdaySymbol'? –

+1

Нет, это свойство 'DateComponents' -Я добавлю' self', так что это более понятно. –

+1

А, спасибо. Я должен был понять, что это свойство является неотъемлемой частью моего вопроса. Но я пока ничего не делаю, и я не привык ссылаться на свойства без 'self'. –