gpt4 book ai didi

cocoa - 如何将 EKEvent 设置为在特定日期之前重复发生可变天数?

转载 作者:行者123 更新时间:2023-12-03 17:55:17 25 4
gpt4 key购买 nike

背景信息

我有一个包含 NSDate 对象的类,该对象用作 EKEvent 的日期。 EKEvent 添加到日历中,有时会设置 EKRecurrenceRule,其日期比事件的实际日期早 x 天。例如,如果 dateOfEvent 为 02/01/2013 并且用户选择在 2 天前收到提醒,则该事件将在 01/30/2013 添加到日历中。

以下是我获取先前日期的方法:

NSDateComponents *components = [[NSDateComponents alloc] init];
components.day = ([daysPrior integerValue] * -1);
NSDate *alertDate = [[NSCalendar currentCalendar] dateByAddingComponents:components
toDate:[myClass dateOfEvent]
options:0];

当前问题

EKRecurrenceRule设置为EKRecurrenceFrequencyMonthly时,它会从每个月的alertDate中选择该月的日期。在上面的示例中,这一天最终是 30 日,但是 2 月没有 30 日,并且该事件永远不会添加到 2 月。我怎样才能让它真正设置每个月的前几天而不是基于特定的数字?

尝试失败

我尝试在重复规则中添加负数天数,希望它能够以我设置的事件日期为基础并向后移动,但它却将事件添加到日历上的每一天。

NSMutableArray *daysOfMonth = [[NSMutableArray alloc] init];
int x;
for (x = 0; x > -31; x--) {
[daysOfMonth addObject:[NSNumber numberWithInt:x]];
}
EKRecurrenceRule *rule = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency:EKRecurrenceFrequencyMonthly
interval:1
daysOfTheWeek:nil
daysOfTheMonth:daysOfMonth
monthsOfTheYear:nil
weeksOfTheYear:nil
daysOfTheYear:nil
setPositions:nil
end:nil];

最佳答案

我决定使用 EKAlarm 并将其添加到每个事件中。

EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:60 * 60 * 24 * ([daysPrior integerValue] * -1)];
[newEvent addAlarm:alarm];

这样我就可以在日历上添加事件的实际日期,并且仍然提前 x 天提醒用户。

关于cocoa - 如何将 EKEvent 设置为在特定日期之前重复发生可变天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14590608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com