美文网首页UI基础iOS
iOS读,写,删除系统提醒事项和日历事件(二)

iOS读,写,删除系统提醒事项和日历事件(二)

作者: Echo126 | 来源:发表于2017-01-06 01:21 被阅读782次

上篇主要说了日历事件,这篇这要说提醒事项。
提醒事项数据可以设置的内容比较少,所有操作起来也相对简单。
废话不多说。

读取提醒事项
//日历,iCloud家庭,工作,订阅,生日

过滤出iPhone和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(@"成功一次性全部提交到事件库");

}

相关文章

网友评论

    本文标题:iOS读,写,删除系统提醒事项和日历事件(二)

    本文链接:https://www.haomeiwen.com/subject/kmdtbttx.html