EKRecurrenceRule для рабочих дней в неделю - PullRequest
2 голосов
/ 08 августа 2011

Я создаю простое приложение, которое может добавлять события в календарь iPhone. Так что я играю с правилом повторения EKEvent. Есть класс EKRecurrenceRule с очень длинным конструктором:

(id)initRecurrenceWithFrequency:(EKRecurrenceFrequency)
                   typeinterval:(NSInteger)interval 
                  daysOfTheWeek:(NSArray *)days 
                 daysOfTheMonth:(NSArray *)monthDays 
                monthsOfTheYear:(NSArray *)months 
                 weeksOfTheYear:(NSArray *)weeksOfTheYear 
                  daysOfTheYear:(NSArray*)daysOfTheYear 
                   setPositions:(NSArray *)setPositions 
                            end:(EKRecurrenceEnd*)end

Так, например, если я пытаюсь создать событие, которое будет повторяться каждый рабочий день недели (кроме воскресенья), я буду использовать этот init:

initRecurrenceWithFrequency:EKRecurrenceFrequencyDaily 
                   interval:1 
              daysOfTheWeek:[NSArray arrayWithObjects:
                                [EKRecurrenceDayOfWeek dayOfWeek:2],
                                [EKRecurrenceDayOfWeek dayOfWeek:3],
                                [EKRecurrenceDayOfWeek dayOfWeek:4],
                                [EKRecurrenceDayOfWeek dayOfWeek:5], 
                                [EKRecurrenceDayOfWeek dayOfWeek:6],
                                [EKRecurrenceDayOfWeek dayOfWeek:7], nil] 
            daysOfTheMonth:nil 
           monthsOfTheYear:nil 
            weeksOfTheYear:nil 
             daysOfTheYear:nil 
              setPositions:nil 
                       end:nil

но это не работает, оно просто повторяет событие каждый день: S Когда я пытаюсь использовать EKRecurrenceFrequencyMonthly, то это работает. Это повторяет событие каждый месяц, но не в воскресенье. Я сообщил об ошибке в Apple, потому что кажется, что у них есть ошибка.

Или у тебя есть другая идея?

Ответы [ 3 ]

4 голосов
/ 07 мая 2012

Создание сложного правила повторения

"Дни недели. Для всех правил повторения, кроме правил ежедневного повторения, вы можете предоставить массив объектов EKRecurrenceDayOfWeek, которые указывают дни недели, в которые происходит событие. Например, вы можете предоставить массив, содержащий объекты EKRecurrenceDayOfWeek со значениями дня недели EKTuesday и EKFriday, чтобы создать повторение, которое происходит каждый вторник и пятницу. "

Другими словами, вы хотите использовать с понедельника по пятницу, а затем повторять это ЕЖЕНЕДЕЛЬНО. Повторять с понедельника по пятницу каждый день бессмысленно.

0 голосов
/ 21 февраля 2013
initRecurrenceWithFrequency:EKRecurrenceFrequencyDaily 
                   interval:1 
              daysOfTheWeek:[NSArray arrayWithObjects:
                                [EKRecurrenceDayOfWeek dayOfWeek:2],
                                [EKRecurrenceDayOfWeek dayOfWeek:3],
                                [EKRecurrenceDayOfWeek dayOfWeek:4],
                                [EKRecurrenceDayOfWeek dayOfWeek:5], 
                                [EKRecurrenceDayOfWeek dayOfWeek:6],
                                [EKRecurrenceDayOfWeek dayOfWeek:7], nil] 
            daysOfTheMonth:nil 
           monthsOfTheYear:nil 
            weeksOfTheYear:nil 
             daysOfTheYear:nil 
              setPositions:nil 
                       end:nil

В этом коде вы используете EKRecurrenceFrequencyDaily и снова указываете дни недели. Вместо этого попробуйте выполнить с EKRecurrenceFrequencyWeekly

EKRecurrenceDayOfWeek *weekReferecne=[[EKRecurrenceDayOfWeek alloc]initWithDayOfTheWeek:2 weekNumber:0];

и создайте EKRecurrenceDayOfWeek объекты с номером недели 0 (ноль), чтобы EKAlarm повторялось каждый день, пока вы не укажете конечную дату. Этот код работает. Счастливого кодирования

0 голосов
/ 19 августа 2011

Документация Apple гласит:

@ метод initRecurrenceWithFrequency: интервал: daysOfTheWeek: daysOfTheMonth: monthsOfTheYear: daysOfTheYear: daysOfTheYear: setPositions: end:

@ abstract Указанный инициализатор.

@ обсуждение Это может быть использовано для создания любого правила повторения.Но учтите, что определенные комбинации не имеют смысла и будут игнорироваться.Например, если вы передадите daysOfTheWeek для ежедневного повторения, они будут игнорироваться .

Я думаю, мы не можем говорить это ежедневно, а не в воскресенье.Пожалуйста, дайте мне знать, если я ошибаюсь.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...