Разница между NSCalendarUnitWeekOfYear и NSCalendarUnitWeekOfMonth

Я хочу сделать UILocalNotification повторять каждую неделю, перед iOS7 я бы использовал localNotification.repeatInterval = NSWeekCalendarUnit - Кроме NSWeekCalendarUnit был объявлен устаревшим

Документы говорят:

"Используйте NSCalendarUnitWeekOfMonth или NSCalendarUnitWeekOfYear, в зависимости от того, что вы имеете в виду"

Но я не знаю, в чем разница, поэтому я не знаю, какой я имею в виду.

2 ответа

Решение

Это не документировано, но скорее всего NSCalendarUnitWeekOfYear будет значение от 1 до 53 (или, возможно, от 0 до 52), представляющее номер недели в течение календарного года, в то время как NSCalendarUnitWeekOfMonth будет 1-5 (или, возможно, 0-4), представляя неделю в течение месяца.

Это все предполагает григорианский календарь. Я не могу говорить с другими типами календаря.

Кажется, что NSCalendarUnitWeekOfMonth равно kCFCalendarUnitWeekOfMonth который определяется как "Определяет исходную неделю календарной единицы месяца". а также NSCalendarUnitWeekOfYear равно kCFCalendarUnitWeekOfYear который определяется как "Определяет исходную календарную единицу недели года".

Для UILocalNotification

NSCalendarUnitWeekOfYear следует использовать в качестве единицы для repeatInterval,

Когда я установил repeatInterval = NSCalendarUnitWeekOfMonth для уведомления, запланированного через 10 секунд, уведомление не запускается, и описание экземпляра UILocalNotification печать .. next fire date = (null) ...

Если я использую NSCalendarUnitWeekOfYear затем появляется уведомление, и я вижу правильную дату следующего запуска из кода в описании уведомления.

Другие вопросы по тегам