简体   繁体   English

根据EKRecurrenceRule未添加EKEvent

[英]EKEvent is not added according to EKRecurrenceRule

I'm trying to create a repeatitive event on calendar. 我正在尝试在日历上创建重复事件。 I've created an EKRecurrenceRule and set it to that event. 我创建了EKRecurrenceRule并将其设置为该事件。 But the event is not created according to my recurrence rule. 但是,该事件不是根据我的重复规则创建的。

Here is my code, 这是我的代码,

        //just creating a recurrence rule for RRULE:FREQ=YEARLY;BYMONTH=6,7;BYDAY=1TH
        // setting the values directly for testing purpose.

        EKRecurrenceEnd *endRecurrence = nil;                                         
        NSMutableArray *monthsOfTheYearArray = [NSMutableArray array];               
        NSMutableArray *daysOfTheWeekArray = [NSMutableArray array]; 

        //BYMONTH=6,7 (6 for june, 7 for july)
        [monthsOfTheYearArray addObject:[NSNumber numberWithInt:6]];
        [monthsOfTheYearArray addObject:[NSNumber numberWithInt:7]];

        //BYDAY=1TH
        [daysOfTheWeekArray addObject:[EKRecurrenceDayOfWeek dayOfWeek:5 weekNumber:1]];
        endRecurrence = [EKRecurrenceEnd recurrenceEndWithEndDate:[self dateFromString:@"2018-12-15T22:30+06:00"]];


        //create the recurrence rule here
        EKRecurrenceRule *recurrence = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency: EKRecurrenceFrequencyYearly

                                                                                    interval:1
                                                                               daysOfTheWeek:daysOfTheWeekArray
                                                                              daysOfTheMonth:nil
                                                                             monthsOfTheYear:monthsOfTheYearArray
                                                                              weeksOfTheYear:nil
                                                                               daysOfTheYear:nil
                                                                                setPositions:nil
                                                                                         end:endRecurrence];



        //setting the values for creating the event here
        EKEventStore *eventStore = [[EKEventStore alloc] init];
        EKEvent *event = [EKEvent eventWithEventStore:eventStore];
        event.title = @"testRecurrenceRule";
        event.location = @"Dhaka";
        [event setCalendar:[eventStore defaultCalendarForNewEvents]];
        event.startDate = [self dateFromString:@"2013-06-18T21:00:00+06:00"];
        event.endDate = [self dateFromString:@"2013-06-18T22:00:00+06:00"];
        [event addRecurrenceRule: recurrence];

        //save the event into calendar.
        [self saveTheEvent:event eventStore:eventStore];

With this code events are being created only on each each 1st thursday of month June, Why July is being skipped? 使用此代码,仅在6月的每个第一个星期四创建事件,为什么跳过7月?
Please let me know why the event is not being created according to the recurrence rules I've set. 请让我知道为什么未根据我设置的重复规则创建事件。

Ok. 好。 In the document EKRecurrenceDayOfWeek Class Reference , it says 在文档EKRecurrenceDayOfWeek类参考中 ,它说

A day of the week can optionally have a week number, indicating a specific day in the recurrence rule's frequency. 一周中的某一天可以有一个星期号,以指定重复规则频率中的特定日期。 For example, a day of the week with a day value of Tuesday and a week number of 2 would represent the second Tuesday of every month in a monthly recurrence rule, and the second Tuesday of every year in a yearly recurrence rule. 例如,星期几的天值为2,星期数为2,则在月度重复规则中代表每月的第二个星期二,在年度重复规则中代表每年的第二个星期二。 A day of the week with a week number of 0 ignores its week number. 星期数为0的星期几将忽略其星期数。

You are doing frequency yearly, so it is interpreting "BYDAY=1TH" as the first TH each year. 您每年做一次频率,因此它将“ BYDAY = 1TH”解释为每年的第一个TH。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM