0

美好的一天,我无法在标准 iOS 日历中添加将重复的自定义事件(例如 2 个月)。

问题是我的活动直到本月底。它从哪一天开始并不重要——它只会在本月重复。代码:

EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
{
    if (!granted)  
        return; 
    // setting the values directly for testing purpose.
    EKRecurrenceEnd *endRecurrence = nil;
    NSMutableArray *daysOfTheWeekArray = [NSMutableArray array];

    //Only weekends
    [daysOfTheWeekArray addObject:[EKRecurrenceDayOfWeek dayOfWeek:6]];
    [daysOfTheWeekArray addObject:[EKRecurrenceDayOfWeek dayOfWeek:7]];

    endRecurrence = [EKRecurrenceEnd recurrenceEndWithEndDate:[[NSDate date] dateByAddingTimeInterval:60*60*24*7*10]]];

    //create the recurrence rule here
    EKRecurrenceRule *recurrence = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency: EKRecurrenceFrequencyYearly
                                                                                interval:1
                                                                           daysOfTheWeek:daysOfTheWeekArray
                                                                          daysOfTheMonth:nil
                                                                         monthsOfTheYear:nil
                                                                          weeksOfTheYear:nil
                                                                           daysOfTheYear:nil
                                                                            setPositions:nil
                                                                                     end:endRecurrence];

    EKEvent *event = [EKEvent eventWithEventStore:store];
    event.title = @"Title";
    event.startDate = [NSDate date]; //today
    event.endDate = [event.startDate dateByAddingTimeInterval:60*60];  //set 1 hour meeting
    [event addRecurrenceRule: recurrence];

    [event setCalendar:[store defaultCalendarForNewEvents]];
    NSError *err = nil;
    [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
}]; 
4

1 回答 1

0

请更改您的频率EKRecurrenceFrequencyMonthly,目前是EKRecurrenceFrequencyYearly

EKEventStore *store = [[EKEventStore alloc] init];

[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
{
    if (!granted)  
    return;

    // setting the values directly for testing purpose.
    EKRecurrenceEnd *endRecurrence = nil;
    NSMutableArray *daysOfTheWeekArray = [NSMutableArray array];

    //Only weekends
    [daysOfTheWeekArray addObject:[EKRecurrenceDayOfWeek dayOfWeek:6]];
    [daysOfTheWeekArray addObject:[EKRecurrenceDayOfWeek dayOfWeek:7]];

    endRecurrence = [EKRecurrenceEnd recurrenceEndWithEndDate:[[NSDate date] dateByAddingTimeInterval:60*60*24*7*10]]];

    //create the recurrence rule here
    EKRecurrenceRule *recurrence = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency: EKRecurrenceFrequencyMonthly
                                                                            interval:1
                                                                       daysOfTheWeek:daysOfTheWeekArray
                                                                      daysOfTheMonth:nil
                                                                     monthsOfTheYear:nil
                                                                      weeksOfTheYear:nil
                                                                       daysOfTheYear:nil
                                                                        setPositions:nil
                                                                                 end:endRecurrence];

    EKEvent *event = [EKEvent eventWithEventStore:store];
    event.title = @"Title";
    event.startDate = [NSDate date]; //today
    event.endDate = [event.startDate dateByAddingTimeInterval:60*60];  //set 1 hour meeting
    [event addRecurrenceRule: recurrence];

    [event setCalendar:[store defaultCalendarForNewEvents]];
    NSError *err = nil;
    [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
}];
于 2017-07-18T09:33:18.787 回答