【发布时间】:2014-01-14 18:43:54
【问题描述】:
我已经成功地为 iPhone 修改了 Calendar.m 和 Calendar.h 插件来创建一个相当复杂的事件:
在给定的月份, 3周每7天有一个事件, 这个月的最后一周没有任何事情发生。
这一直有效,直到我意识到两件事: 1. 这是一个给定的月份从开始日期。开始日期可以是月份、中间、结束或开始的任何时间。 2. 并非所有月份都有 28 天。我必须考虑 29、30、31。 3. 结束日期和开始日期一样,不一定是月初或月底。
我的 EKRecurrenceRule 声明:
EKRecurrenceRule* rrule = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency:EKRecurrenceFrequencyMonthly
interval:1
daysOfTheWeek:nil
daysOfTheMonth:validDays monthsOfTheYear:nil weeksOfTheYear:nil daysOfTheYear:nil setPositions:nil end:rend];
我的 validDays 数组(在上面的 daysOfTheMonth 中提供)
//Note: 22 is week 4. This will be excluded.
validDays = [[NSArray alloc]initWithObjects:
[NSNumber numberWithInt:1],
[NSNumber numberWithInt:8],
[NSNumber numberWithInt:15],
[NSNumber numberWithInt:29], nil];
EKAlarm 顺便说一句,为方便起见,偏移量为 0。
是的,它现在是硬编码的。我知道我必须更改 validDays 数组,并且我知道如何获取当天的天数,但我不知道从这里去哪里。 EKRecurrenceRule 的文档似乎没有涵盖从月初开始到月底结束的并发症案例。
更改开始日期和结束日期,至少在 iOS7 中,似乎不会自动进行任何偏移。如果我从本月 10 日开始,f'rex,第一个提醒是在 15 号(8 号和 1 号已经过去)——当我想要 17 号的第一个提醒时。第一次提醒应该是从开始日期算起的 7 天,然后每次提醒都在 7 天后,每 3 周休息 1 周。
我目前的印象是,要考虑从月中开始和不等的月份长度,我可能必须创建多个 EKRecurrenceRules,并且通过扩展多个每周甚至每月的事件都不算作重复事件。这不是预期的结果,因为此类事件在日历中很难删除。
有什么帮助吗?
【问题讨论】:
-
呃...好吧,我肯定需要一个答案。在循环中添加单独的日子需要血腥的年龄,并且不适合分发。 (一年的可变日期持续时间为 5 分钟,即使在 Calendar.m 而不是 Calendar.js 中完成。)
-
没人?我猜 EKRecurrence 并没有我想象的那么发达。我将不得不得出结论,从月中开始考虑显然是不可行的。