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

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


接上一篇,我们来看一下如何根据类型和名称找到一个特定的日历源,首先我们写一个帮助方法:

-(EKSource*)sourceInEventStore:(EKEventStore*)store sourceType:(EKSourceType)type sourceTitle:(NSString*)title{
    for (EKSource *source in store.sources) {
        if (source.sourceType == type && [source.title caseInsensitiveCompare:title] == NSOrderedSame) {
            return source;
        }
    }
    return nil;
}

我们当然可以只通过日历源的title来查找,不过加上对其类型的检查可谓是双保险.我们在上述方法的开头位置下断点,在模拟器中运行App,不出意外应该会在该断点中断下来,我们在debug console中输入:

po store.sources

可以看到模拟器中所有日历源的输出:

(lldb) po store.sources
<__NSArrayI 0x787939e0>(
EKSource <0x78792770> {UUID = 705E0A9A-1FD0-4B56-B7D9-CA4E268ECF90; type = Local; title = Default; externalID = (null)},
EKSource <0x787939a0> {UUID = F2F63129-2812-48C0-80B8-AFCEFFF9AC84; type = Other; title = Other; externalID = (null)}
)

可以看到日历数据库中第一个日历源的真正名称为Default,而后面一个名称为Other.这就印证了我在第一篇中说的,在模拟器中显示的第一个日历源的名称只是一个便于用户理解的别名.

如果在真机中运行呢?你会发现第一个日历源的名称为iCloud.区别是前者是一个本地的源(EKSourceTypeLocal),后者是一个远程的源.这里多说几句,远程的日历源也有很多种类型,比如:

    EKSourceTypeExchange
    EKSourceTypeCalDAV

它们分别表示两种不同的日历通讯协议,用来同步客户端和服务器端上的日历内容.感兴趣的童鞋可以自行度娘谷哥搜寻.

现在我们可以肯定模拟器中的Default源是本地源,而iCloud源是一个CalDAV类型的远程源.

下面我们就按照上面我们分析过的内容来分别获取Default和iCloud源:

//获取iCloud源
EKSource *icloudSource = [self sourceInEventStore:store sourceType:EKSourceTypeCalDAV sourceTitle:@"iCloud"];
//获取本地Default源
EKSource *localSource = [self sourceInEventStore:store sourceType:EKSourceTypeLocal sourceTitle:@"Default"];

三.获取日历源中的指定日历

现在我们获取到了一个日历源,那么怎么获取其中某一个日历呢?日历在EventKit的表示为一个EKCalendar的实例,我们同样写一个帮助方法:

-(EKCalendar*)calendarWithTitle:(NSString*)title type:(EKCalendarType)type inSource:(EKSource*)source forEventType:(EKEntityType)eventType{
    for (EKCalendar *calendar in [source calendarsForEntityType:eventType]) {
        if ([calendar.title caseInsensitiveCompare:title] == NSOrderedSame && calendar.type == type) {
            return calendar;
        }
    }
    return nil;
}

上面代码很简单,不用我再碎碎念了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
100多个Android的实用开源小应用,包含Android -- 引导页面的实现 Android APP引导页大全 Android Push it单机版事件管理APP Android RecycleView+任意头尾布局+拖拽换位+拖拽删除demo Android sql练习合集 Android 仿12306 Android 优秀计步器 Android 体重计算源码 Android 使用Gallery_tabhost实现标签效果图源码 Android 例子源码根据CPU使用时间计算程序电量使用 Android 医院介绍电子书籍源码 android 图片涂鸦 Android 基于局域网的P2P聊天系统 Android 天气预报 Android 实时浏览各种文章APP Android 开发辅助工具 Android 手机新闻客户端源码 Android 手机点餐下单项目源码 Android 新闻客户端 Android 日历控件源码 Android 日记系统源码(数据库的基本操作) Android 极简强大VR本地播放器 Android 用handler机制联网获取图片 Android 百宝箱 Android 简单的翻译软件 Android 精美仿开眼视频跨平台App Android 自定义数字密码输入键盘 Android 趣味答题应用 Android 音乐播放器 Android--AA记账助手 Android--Hide-Music-Player Android-3D卡片效果 android个人心页面效果源码 Android仿微博、微信、qq 点击缩略图TransferImage Android例子源码IOS风格的uitableview列表 Android例子源码IOS风格的圆角分组设置页面 Android例子源码不断保持后台唤醒的例子源码 Android例子源码九宫格密码输入例子 Android例子源码仿QQ的头像选择弹出的对话框 Android例子源码仿多看阅读的左右平移翻页效果小例子 Android例子源码可以通过网络请求内容的自定义列表选择Dialog Android例子源码图片旋转缩放加盖水印透明倾斜扭曲处理 Android例子源码实现Windows8风格的Dialog Android例子源码强大的listview效果集合项目 Android例子源码模仿IOS音乐的可拖动导航栏功能 Android例子源码模仿安卓微信、云播雷达扫描动画效果 Android例子源码类似58同城的通过滑屏控制引导页 Android例子源码计步器圆形UI设计 Android例子源码适合新手学习的listview使用源码 android及时通讯源码 android可伸缩日历效果源码 Android应用源码CreativeCommons新闻客户端半成品 Android应用源码使用Vitamio框架的网络在线电视直播 Android应用源码全能网络视频播放器 Android应用源码单机版电子阅读器 Android应用源码可以直接发邮件的简洁课程表项目源码 Android应用源码可以管理U盘的文件管理器 Android应用源码哔哩哔哩弹幕网站源码 Android应用源码基于bmob的即时聊天 Android应用源码大学生考勤项目源码 Android应用源码带密码登陆的密码保险箱 Android应用源码开关WIFI热点搜索连接开源有注释 Android应用源码比较不错的新闻客户端 Android应用源码省市联动选择城市的天气预报源码 Android应用源码简单的NB微博项目源码 Android应用源码简洁的随手记事项目源码 Android应用源码类似小米的天天文件管理器 Android应用源码老人居家看护系统 Android应用源码蝌蚪听书第版听书神器 android掌上几分钟视频应用源码 Android版GitHub Android简单通讯源码:手机控制PC的关机、重启 Android软件源码短信通讯录毕设项目带需求报告 Android软件源码类似时间轴记录的记账记事本 Android项目源码 studio和eclipse双版本仿bilibili客户端 Android项目源码GPS实时定位位置共享 Android项目源码QQ登录语音合成桌面控件天气预报 Android项目源码v2ex技术社区非官方客户端 Android项目源码事件日程管理APP Android项目源码任阅小说阅读器高仿追书神器 Android项目源码在线课堂教育UI框架源码 Android项目源码基于Bmob的糖尿病用药提醒追踪系统 Android项目源码基于MVVM架构的非官方知乎日报APP Android项目源码基于安卓的简单租车系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值