博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS--代码添加、删除 系统日历中的 日历事件
阅读量:6495 次
发布时间:2019-06-24

本文共 3973 字,大约阅读时间需要 13 分钟。

EKEventTool

  网络上写的方法都大同小异,我也是看着各种博客学习的,现在就是把自己做好的项目做一下记录。

1. 保存

#import 
- (void)saveEvent:(id)sender { //事件市场 EKEventStore *eventStore = [[EKEventStore alloc] init]; //6.0及以上通过下面方式写入事件 if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) { // the selector is available, so we must be on iOS 6 or newer [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ if (error) { //错误细心 // display error message here } else if (!granted) { //被用户拒绝,不允许访问日历 // display access denied error message here } else { // access granted // ***** do the important stuff here ***** //事件保存到日历 //创建事件 EKEvent *event = [EKEvent eventWithEventStore:eventStore]; event.title = @"哈哈哈,我是日历事件啊"; event.location = @"我在杭州西湖区留和路"; NSDateFormatter *tempFormatter = [[NSDateFormatter alloc]init]; [tempFormatter setDateFormat:@"dd.MM.yyyy HH:mm"]; event.startDate = [[NSDate alloc]init ]; event.endDate = [[NSDate alloc]init ]; event.allDay = YES; //添加提醒 [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -60.0f * 24]]; [event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]]; [event setCalendar:[eventStore defaultCalendarForNewEvents]]; NSError *err; [eventStore saveEvent:event span:EKSpanThisEvent error:&err]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Event Created" message:@"Yay!?" delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil]; [alert show]; NSLog(@"保存成功"); } }); }]; }

 

2.查找

  查找主要是两种办法:

  1.根据日历的时间、标题等这些属性,查找eventstore中的日历事件,找到相同的事件。

  这种方法主要是在没有保存数据的时候,比方从后台获得的事件数据,根据属性查找是否已经保存到了本地,可以很准确的查找到所查找的某一个事件。

  2.根据eventIdentifier。 EKEvent的唯一标识,可以方便快捷的找到特定的事件,但是前提是要在第一次存储的时候保存下该数据。、

  两种方法适合不同的需求,都可以使用。

1.EKEventStore * eventStore = [[EKEventStore alloc]init];       NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];    [dateFormatter setDateFormat:yyyyMMddHHmm];        NSDate *startDate = [dateFormatter dateFromString:eventModel.startDateStr];    NSDate *endDate = [dateFormatter dateFromString:eventModel.endDateStr];        NSPredicate *predicate = [eventStore predicateForEventsWithStartDate:startDate endDate:endDate calendars:@[[eventStore defaultCalendarForNewEvents]]];        NSArray *events = [eventStore eventsMatchingPredicate:predicate];2. EKEvent *event = [self.myEventStore eventWithIdentifier:identifier];

 

3.删除

EKEvent *event = [self.myEventStore eventWithIdentifier:identifier];         __block BOOL isDeleted = NO;    dispatch_async(dispatch_get_main_queue(), ^{        NSError *err = nil;        isDeleted = [self.myEventStore removeEvent:event span:EKSpanThisEvent commit:YES error:&err];    });

 

 

附上GitHub 该单例地址

/** 这个单例是在项目中用到的功能,创建日历提醒事件到系统日历中,主要是 添加、删除 、和删除所有创建的事件 功能,如果需要使用的 话,可能需要自己修改。欢迎提出修改和优化意见。大家一起学习。 */

 

转载于:https://www.cnblogs.com/qiangtian/p/6908449.html

你可能感兴趣的文章
汇编语言之实验一
查看>>
09、Modules - Directory根据目录加载模块文件
查看>>
观影识人生
查看>>
The Little Prince-12/12
查看>>
git 调用 Beyond Compare
查看>>
ECMAScript 5 —— Function 类型 (一)
查看>>
SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]
查看>>
android实现图片识别的几种方法
查看>>
bzoj1030[JSOI2007]文本生成器
查看>>
mvc学习地址
查看>>
masonry 基本用法
查看>>
使用openssl创建自签名证书及部署到IIS教程
查看>>
Word产品需求文档,已经过时了【转】
查看>>
dtoj#4299. 图(graph)
查看>>
关于网站的一些js和css常见问题的记录
查看>>
zabbix-3.4 触发器
查看>>
换用代理IP的Webbrowser方法
查看>>
【视频编解码·学习笔记】7. 熵编码算法:基础知识 & 哈夫曼编码
查看>>
spark集群安装部署
查看>>
笔试面试
查看>>