五、创建循环事件

简介

循环事件会根据设定的时间间隔重复执行,循环事件需要在创建时设定循环的规则,循环规则主要在 EKRecurrenceRule类中描述。

使用基本重复规则

接口:
 - (id)initRecurrenceWithFrequency:(EKRecurrenceFrequency)type interval:(NSInteger)interval end:(EKRecurrenceEnd *)end
参数说明:
 - type:EKRecurrenceFrequency枚举,有按天、按周、按月、按年四个值
 - interval:重复执行的间隔,比如type设置按周循环,interval为1表示每周执行一次,设为3表示每3周执行一次
 - end:结束事件的条件,使用类EKRecurrenceEnd设置结束的条件,可以是某个特定的日期,也可以是循环的次数,即重复多少次后结束该事件。如果为nil,表示一直重复,永不结束。

使用高级重复规则

高级规则是比较基本规则而言,有更多的参数和组合方式来自定义规则

接口:
- (id)initRecurrenceWithFrequency:(EKRecurrenceFrequency)type
                         interval:(NSInteger)interval
                    daysOfTheWeek:(NSArray *)days
                   daysOfTheMonth:(NSArray *)monthDays
                  monthsOfTheYear:(NSArray *)months
                   weeksOfTheYear:(NSArray *)weeksOfTheYear
                    daysOfTheYear:(NSArray *)daysOfTheYear
                     setPositions:(NSArray *)setPositions
                              end:(EKRecurrenceEnd *)end
参数名参考值组合方式举例
days
具体周几
EKRecurrenceDayOfWeek类型的数组只要type!=EKRecurrenceFrequencyDaily时都可以使用days包含EKTuesday和EKFriday两个元素表示每个周二和周四都执行事件
monthDays
月中的哪几天
一个NSNumber的数组,取值范围-31-31且不能为0,负数表示从月底往前算只有当type==EKRecurrenceFrequencyDaily时monthDays包含-1和1两个元素,那么将在每个月的第一天和最后一天执行事件
months
一年中的哪几个月
一个NSNumber的数组,取值范围1-12,即1月到12月只有当type==EKRecurrenceFrequencyYearly时months包含-1和1两个元素,那么将在每个月的第一天和最后一天执行事件
weeksOfTheYear一个NSNumber的数组,取值范围-53到53,负数表示从年底往前算(每年有53个周)只有当type==EKRecurrenceFrequencyYearly时如果你设置的原始的事件触发时间是周三,然后设置weeksOfTheYear为1和-1两个元素,则表示每年第一周的周三和最后一周的周三触发事件。但如果你没设置周三,只设置第一周和最后一周的话,事件并不会被触发
daysOfTheYear
一年中的哪几天
一个NSNumber的数组,取值范围-366到366,负数表示从年底往前算只有当type==EKRecurrenceFrequencyYearly时daysOfTheYear包含-1和1两个元素,那么将在每年的第一天和最后一天执行事件
setPositions
这里的position并不是地理位置。该参数取决于其他参数的设置,表示根据其他重复规则,第几次会执行
一个NSNumber的数组,取值范围-366到366,负数表示从会发生的情况中的最后一种往前数只要type!=EKRecurrenceFrequencyDaily时都可以使用假设当前有一个事件标识一年中每周的一到五执行,当setPositions中的值为1和-1时,表示只有这一年第一周的一到五和最后一周的一到五才会触发事件

你可以对上表中的参数赋予任何值,也可以忽略,如果你提供了多种参数组合,则只会执行days的方式。
设定完了重复规则之后,可以调用 addRecurrenceRule: 方法添加到事件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值