Разница между NSCalendarUnitWeekOfYear и NSCalendarUnitWeekOfMonth
Я хочу повторять UILocalNotification
каждую неделю, до iOS7 я бы использовал localNotification.repeatInterval = NSWeekCalendarUnit
- кроме NSWeekCalendarUnit
устарел.
В документах говорится:
"Использовать NSCalendarUnitWeekOfMonth или NSCalendarUnitWeekOfYear, в зависимости от на котором вы имеете в виду"
Но я не знаю, в чем разница, поэтому я не знаю, что я имею в виду.
Ответы
Ответ 1
Они не отображаются, но, скорее всего, NSCalendarUnitWeekOfYear
будет иметь значение от 1 до 53 (или, может быть, 0-52), представляющее номер недели в течение календарного года, тогда как NSCalendarUnitWeekOfMonth
будет 1-5 ( или может быть 0-4), представляющих неделю в течение месяца.
Все это предполагает григорианский календарь. Я не могу говорить с другими типами календаря.
Кажется, что NSCalendarUnitWeekOfMonth
равно kCFCalendarUnitWeekOfMonth
, которое определяется как "Указывает исходную неделю месяца календарного блока". и NSCalendarUnitWeekOfYear
равен kCFCalendarUnitWeekOfYear
, который определяется как "Указывает исходную неделю календарного блока года".
Ответ 2
Что касается UILocalNotification
NSCalendarUnitWeekOfYear
следует использовать как единицу для repeatInterval
.
Когда я установил repeatInterval = NSCalendarUnitWeekOfMonth
для уведомления, запланированного через 10 секунд, уведомление не срабатывает, а описание экземпляра UILocalNotification
печатает .. next fire date = (null) ...
Если я использую NSCalendarUnitWeekOfYear
, появится уведомление, и я вижу правильную следующую дату огня из кода в описании уведомления.