上篇主要说了日历事件,这篇这要说提醒事项。
提醒事项数据可以设置的内容比较少,所有操作起来也相对简单。
废话不多说。
读取提醒事项
//日历,iCloud家庭,工作,订阅,生日
//来查找所有的reminders
NSPredicate*pre =[self.eventStorepredicateForRemindersInCalendars:only3A];
//异步方法。
[self.eventStorefetchRemindersMatchingPredicate:precompletion:^(NSArray *_Nullable reminders) {
//异步查找出提醒事项数组reminders,这里可根据需求进一步进行对数组的操作
}
reminders 数组里存的是EKReminder 对象。
列举EKReminder 的一些属性:
title:标题
notes:备注
priority:优先级(NSUInteger) 0无级别,1级别高---9级别低(1-4高,5中等,6-9低)
completed:是否已完成
completionDate:完成时间
alarms:提醒数组(数组里是EKAlarm对象, 可以获得跟闹钟相关的数据,如具体时间,偏移秒数...)
添加一条提醒事项
EKAlarm *alarm = [EKAlarm alarmWithAbsoluteDate:[now dateByAddingTimeInterval:30]];
EKReminder *reminder = [EKReminder reminderWithEventStore:es];
reminder.title = @"提醒的标题";
NSCalendar *cal = [NSCalendar currentCalendar];
[cal setTimeZone:[NSTimeZone systemTimeZone]];
NSInteger flags = NSYearCalendarUnit | NSMonthCalendarUnit |NSDayCalendarUnit |NSHourCalendarUnit | NSMinuteCalendarUnit |NSSecondCalendarUnit;
reminder.startDateComponents = [cal components:flags fromDate:[now dateByAddingTimeInterval:30]];//开始时间
reminder.dueDateComponents = [cal components:flags fromDate:[now dateByAddingTimeInterval:30]]; //结束时间
reminder.completionDate = [now dateByAddingTimeInterval:30];
[reminder setCalendar:[self.eventStore defaultCalendarForNewReminders]];
reminder.priority = 1;//优先级
[reminder addAlarm:alarm];
NSError *err = nil;
if([self.eventStore saveReminder:reminder commit:YES error:&err]){
NSLog(@"创建成功!");
}else{
NSLog(@"创建失败%@",err);
}
//记得commit:YES操作一次提交一次。
删除提醒事项
[reminderArrayenumerateObjectsUsingBlock:^(id_Nonnullobj,NSUIntegeridx,BOOL*_Nonnullstop) {
EKReminder*reminder =(EKReminder*)obj;
/*如果你有不止一个EKReminder需要删除,好的做法是不要一个一个的提交,而是全部删除,在最后一次性提交。这个也适用于增加新的事件到存储器中*/
NSError*error =nil;
BOOLsuccess = [self.eventStoreremoveReminder:remindercommit:NOerror:&error];
if(!success) {
NSLog(@"删除错误");
}else{
NSLog(@"本次删除成功");
}
}];
//一次性全部提交修改
NSError*commitErr =nil;
BOOLcommitSuccess = [self.eventStorecommit:&commitErr];
if(!commitSuccess) {
NSLog(@"提交到事件库错误");
}else{
NSLog(@"成功一次性全部提交到事件库");
}