iOS9中如何在日历App中创建一个任意时间之前开始的提醒(三)

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


四.创建任意时间之前开始的提醒

现在我们找到了指定源中的指定日历,剩下要做的就是在日历中创建一个事件,并且设置其对于的提醒.我们可以创建2种类型的事件:单一的和循环的(或者称之为重复的).这里为了简单起见(KISS),我们只创建单一的事件:

-(void)addAlarmToCalendar:(EKCalendar*)calendar inStore:(EKEventStore*)store{
    NSDate *startDate = [NSDate dateWithTimeIntervalSinceNow:60];
    NSDate *endDate = [startDate dateByAddingTimeInterval:20.f];
    EKEvent *event = [EKEvent eventWithEventStore:store];
    event.calendar = calendar;
    event.startDate = startDate;
    event.endDate = endDate;

    EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:-7.f];
    event.title = @"Event with Alarm";
    [event addAlarm:alarm];

    NSError *saveError = nil;
    if ([store saveEvent:event span:EKSpanThisEvent error:&saveError]) {
        NSLog(@"Saved an event that fires 60 seconds from now.");
    }else{
        NSLog(@"Failed to save the event Error is %@",saveError);
    }
}

我们来解释下上述方法的含义:

首先设置好事件的开始和结束时间.
然后关联事件和日历.接下来创建一个提醒对象EKAlarm,并将其开始时间设置为相对于事件开始时间的前7秒钟.
使用 addAlarm:方法将提醒与该事件对象相关联.
最后我们将事件保存到日历数据库中.

我们首先在模拟器上执行一下:

可以看到提醒时间为7秒之前,最后我们在真机上运行一下:

注意在真机上运行别忘了将日历源改为iCloud,而在模拟器上日历源为Default.

时间: 2024-12-04 01:21:18

iOS9中如何在日历App中创建一个任意时间之前开始的提醒(三)的相关文章

GNU/Linu系统中如何使用命令行xdg-open打开一个任意格式的文件

在GNU/Linux下,当需要打开其他格式文件时,咱们通常做法是进入到文件所在的目录,双击打开,很影响效率.事实上,可以通过命令xdg-open打开这些格式文件,甚至是网页,像打开文件一样简单.   在GNU/Linux下,通常用命令行打开文本文件,比如用命令gedit.more.cat.vim.less.但当需要打开其他格式文件时,比如pdf.jpg.mp3格式文件,咱们通常做法是进入到文件所在的目录,双击打开,很影响效率.事实上,可以通过命令xdg-open(opens a file or

使用IBM WebSphere Cast Iron Web API Services创建一个Web API

利用 IBM WebSphere Cast Iron Web API Services,您只需点击几下就可以组装和显示 API.您还可以通过所提供的分析法来分析您的 Web API 的使用情况,并利用社区挂钩在品牌化的开发人员门户中将 Web API 社区社交化. Web API 是一个快速增长的业务渠道,可帮助您的企业进入新的市场,并吸引新的客户与合作伙伴.它们还可以帮助您从大型开发人员社区中挖掘创新,而不仅仅是在您的公司的开发人员中挖掘创新. 由于 Web API 显示关键的业务资产和服务(

多线程-C++怎么在一个进程里创建一个线程

问题描述 C++怎么在一个进程里创建一个线程 大家好,我用CreateProcess创建了一个进程,进程的句柄可以获取到, 请问能否通过此句柄创建一个此进程的子线程? 如果可以,如何实现? 多谢. 解决方案 createremotethread apihttp://blog.163.com/lhc__721721/blog/static/639133252010622359175/ 解决方案二: 创建一个线程创建一个线程vc创建一个线程和销毁的方法 解决方案三: 在程序中创建另一个进程的线程,要

视图语法-用oracle创建一个视图,根据不同条件查询不同的内容。

问题描述 用oracle创建一个视图,根据不同条件查询不同的内容. 我现在需要创建一个视图A,视图里面是三个视图BCD,根据一个页面传来的值判断不同的值查询不同的视图,这个值不少表中的字段.语法该怎么写?大神们帮帮忙啊!! 解决方案 比方说传来的值是E,1查询B,2查询C,3查询D CREATE OR REPLACE A_V SELECT * FROM B WHERE E = 1 UNION SELECT * FROM C WHERE E = 2 UNION SELECT * FROM D WH

详解iOS App中UITableView的创建与内容刷新_IOS

UITableView几乎是iOS开发中用处最广的一个控件,当然也是要记相当多东西的一个控件. 创建首先创建一个新的项目,并添加一个MainViewController的Class文件 打开MainViewController.h文件 @interface MainViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> @property (nonatomic, retain) NSArray *

java 日历中用户创建一个跨天的事件提醒,那么我的java日历应当如何去记录并打印出这样的事件呢?

问题描述 java 日历中用户创建一个跨天的事件提醒,那么我的java日历应当如何去记录并打印出这样的事件呢? 一个班级假如有100个同学,现在我们按照学号随机选择连续学号的42名同学,这42名同学一排7人分为6排,然后按照他们这一年来参加活动的多少来给分,规定一个同学参加一次班级活动就给这位同学1分,参加一次团体表演(你可以认为参加团体表演的人都是按照学号顺序相邻的,比如从1到10号的同学,他们一块进行了一场团体表演,学号15-30的16位同学一块进行了一次团体表演等,这些人每人都能获得1分)

详解iOS App中UISwitch开关组件的基本创建及使用方法_IOS

一.第一种创建UISwitch组件的方法,在代码中动态创建. 1.打开Xcode, 新建项目Switch,选择Single View Application. 2.打开ViewController.m文件在viewDidLoad方法里添加代码: 复制代码 代码如下: (void)viewDidLoad  {      [super viewDidLoad];      UISwitch *switchButton = [[UISwitch alloc] initWithFrame:CGRectM

win8系统在日历应用中怎么添加活动

  win8系统自带很多实用的小功能,而这些小功能对大家工作有很大的帮助,比如日历功能,刚刚接触雨林木风win8系统的用户可能觉得日历功能只是看时间的,没有其他功能作用,那么大家就错啦,其实我们可以在日历应用中添加活动,这样大家就不忘记该做的事情了,那么win8系统如何在日历应用中添加活动呢?其实设置方法很简单,只要根据下面步骤进行一些简单设置即可. 具体步骤如下: 1.在metro界面运行"日历"应用,默认情况下将以月份视图显示.在此界面单击鼠标右键可以呼出底部菜单栏,可以选择以周视

网页与APP中那些优美的登陆表单

  Dribbble收集了20个漂亮的登陆表单案例.希望你看后能从中受益,并对你以后的登陆表单设计有帮助.设计一个登陆表单看上去非常容易,但大多设计都很糟糕.毫无亮点.无论如何,这篇Dribbble案例集锦绝对走的是另一个极端.希望它们能赢得你的青睐!来一起欣赏吧:) 网站与APP中的登陆表单 继承了iOS7的精髓,这件登陆界面作品将iOS7微妙的动画背景上升到一个新的层面.此处的背景完全是一张动画图片--甚至可能是GIF.尽管这背景事实上没有那么精致,但这一定是你平时不常见的设计.你几乎很难见