Swift - 使用EventKit操作"提醒事项"(2、新增、修改、删除提醒)

来源:互联网 发布:成都算法工程师招聘网 编辑:程序博客网 时间:2024/06/05 17:26
1,添加提醒
下面样例中,填写提醒内容、选择提醒时期后,点击“保存”即可将提醒添加到系统的“提醒事项”中。
(这里我将日期输入框的 inputView 设置成 UIDatePicker,这样点击日期文本框的时候底部会自动出现日期选择器来选择时间。)
  原文:Swift - 使用EventKit操作"提醒事项"(2、新增、修改、删除提醒)    原文:Swift - 使用EventKit操作"提醒事项"(2、新增、修改、删除提醒)    原文:Swift - 使用EventKit操作"提醒事项"(2、新增、修改、删除提醒)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import UIKit
import EventKit
 
class ViewControllerUIViewController {
     
    var eventStore: EKEventStore!
    //提醒信息文本框
    @IBOutlet weak var reminderTextField: UITextField!
    //提醒时间文本框
    @IBOutlet weak var dateTextField: UITextField!
    //提醒日期选择器
    var datePicker: UIDatePicker!
     
    override func viewDidLoad() {
        super.viewDidLoad()
 
        self.eventStore = EKEventStore()
         
        //设置提醒时间文本框使用的日期选择器
        datePicker = UIDatePicker()
        datePicker.addTarget(self, action: #selector(ViewController.addDate),
                             forControlEvents: .ValueChanged)
        datePicker.datePickerMode = UIDatePickerMode.DateAndTime
        dateTextField.inputView = datePicker
    }
     
    //日期选择器响应方法
    func addDate(){
        //日期样式
        let formatter = NSDateFormatter()
        formatter.dateFormat = "yyyy年MM月dd日 HH:mm"
        //更新提醒时间文本框
        self.dateTextField.text = formatter.stringFromDate(datePicker.date)
    }
     
    //保存按钮响应办法
    @IBAction func addReminder(sender: AnyObject) {
        //获取"提醒"的访问授权
        self.eventStore.requestAccessToEntityType(EKEntityType.Reminder) {
            (granted: Bool, error: NSError?) -> Void in
             
            //创建提醒条目
            let reminder = EKReminder(eventStore: self.eventStore)
            reminder.title = (self.reminderTextField.text)!
            let dueDateComponents = self.dateComponentFromNSDate(self.datePicker.date)
            reminder.dueDateComponents = dueDateComponents
            reminder.calendar = self.eventStore.defaultCalendarForNewReminders()
            //保存提醒事项
            do {
                try self.eventStore.saveReminder(reminder, commit: true)
                print("保存成功!")
            }catch{
                print("创建提醒失败: \(error)")
            }
        }
    }
     
    //根据NSDate获取对应的NSDateComponents对象
    func dateComponentFromNSDate(date: NSDate)-> NSDateComponents{
        let calendarUnit: NSCalendarUnit = [.Minute, .Hour, .Day, .Month, .Year]
        let dateComponents = NSCalendar.currentCalendar().components(calendarUnit,
                                                                     fromDate: date)
        return dateComponents
    }
     
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
         
    }
}

2,修改提醒
修改提醒同新增提醒差不多,我们首先获取到需要修改的 Reminer 对象,然后修改其时间或标题。最后调用 eventStore 的 saveReminder 方法保存即可。
下面样例将所有的提醒标题都修改成“欢迎访问hangge.com
原文:Swift - 使用EventKit操作"提醒事项"(2、新增、修改、删除提醒)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//获取"提醒"的访问授权
self.eventStore.requestAccessToEntityType(EKEntityType.Reminder) {
    (granted: Bool, error: NSError?) -> Void in
     
    if granted{
        // 获取授权后,我们可以得到所有的提醒事项
        let predicate = self.eventStore.predicateForRemindersInCalendars(nil)
        self.eventStore.fetchRemindersMatchingPredicate(predicate, completion: {
            (reminders: [EKReminder]?) -> Void in
             
            //遍历所有提醒并修改
            for reminder in reminders! {
                reminder.title = "欢迎访问hangge.com"
                reminder.calendar = self.eventStore.defaultCalendarForNewReminders()
                //保存提醒事项
                do {
                    try self.eventStore.saveReminder(reminder, commit: true)
                    print("保存成功!")
                }catch{
                    print("保存失败: \(error)")
                }
            }
        })
    }else{
        print("获取提醒失败!需要授权允许对提醒事项的访问。")
    }
}

3,删除提醒
我们首先获取到需要删除的 Reminer 对象,然后调用 eventStore 的 removeReminder 方法即可。
下面样例将系统里所有的提醒删除。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//获取"提醒"的访问授权
self.eventStore.requestAccessToEntityType(EKEntityType.Reminder) {
    (granted: Bool, error: NSError?) -> Void in
     
    if granted{
        // 获取授权后,我们可以得到所有的提醒事项
        let predicate = self.eventStore.predicateForRemindersInCalendars(nil)
        self.eventStore.fetchRemindersMatchingPredicate(predicate, completion: {
            (reminders: [EKReminder]?) -> Void in
             
            //遍历所有提醒并删除
            for reminder in reminders! {
                //保存提醒事项
                do {
                    try self.eventStore.removeReminder(reminder, commit: true)
                    print("删除成功!")
                }catch{
                    print("删除失败: \(error)")
                }
            }
        })
    }else{
        print("获取提醒失败!需要授权允许对提醒事项的访问。")
    }
}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 连网电视蓝频了怎么办 英雄联盟画面卡顿怎么办 长残了怎么办原来很帅 被吓到了怎么办没精神 宝宝吓着怎么办最有效 4个月婴儿易惊吓怎么办 心里有问题的人怎么办 减肥的时候想吃东西怎么办 大联盟ping很高怎么办 酷派手机弹广告怎么办 孕早期肚子紧绷怎么办 怀孕2个月同房了怎么办 怀孕前三月同房了怎么办 人流前三天同房了怎么办 人流后三天同房了怎么办 吃避孕药后月经量少怎么办 排卵日同房不想怀孕怎么办 排卵日同房没有怀孕怎么办 想怀孕想生儿子怎么办 到期大姨妈不来怎么办 怕怀孕月经不来怎么办 宫颈环扎后宫缩怎么办 来例假刺激外阴高潮了怎么办 客人消费完说没钱怎么办? 孕13周血糖偏高怎么办 餐后血糖高14点怎么办 餐后血糖20多怎么办 空腹血糖6.6饭后9.2怎么办 键盘shift键失效了怎么办 灵异附身夫妻不合怎么办 鞋子买大了半码怎么办 鞋子买小了半码怎么办 黑布鞋鞋面白了怎么办 黑布鞋不黑了怎么办 黑布鞋退白了怎么办 老北京布鞋款式太少怎么办 老人输液抽搐后昏迷怎么办 头七家里有狗怎么办 股票退市股民的钱怎么办 美国股票退市股民怎么办 百度云字幕和视频不同步怎么办