Swift 3 创建提醒 EKEventStore

ada*_*ter 0 reminders eventkit swift3

我想将提醒保存到默认提醒位置。但是当我按下按钮时,我收到一个致命错误:在展开可选值时意外发现 nil...我对此很陌生,我找到的大多数示例都过于复杂或不在 Swift 3 中。

class ViewController: UIViewController {

var eventStore: EKEventStore?

@IBOutlet weak var reminderText: UITextField!

@IBAction func setReminder(_ sender: Any) {

    let reminder = EKReminder(eventStore: self.eventStore!)

    reminder.title = "Go to the store and buy milk"
    reminder.calendar = (eventStore?.defaultCalendarForNewReminders())!

    do {
        try eventStore?.save(reminder,
                             commit: true)
    } catch let error {
        print("Reminder failed with error \(error.localizedDescription)")
    }

   } 
 }
Run Code Online (Sandbox Code Playgroud)

ada*_*ter 5

由于它是一段简单的代码,我想我会在为未来的 swifters 弄清楚之后发布我的答案。我总是喜欢简单的例子。

import UIKit
import EventKit

class ViewController: UIViewController {

var eventStore = EKEventStore()
var calendars:Array<EKCalendar> = []

// Not used at this time
@IBOutlet weak var reminderText: UITextField!

@IBAction func setReminder(_ sender: Any) {


    let reminder = EKReminder(eventStore: self.eventStore)

    reminder.title = "Go to the store and buy milk"
    reminder.calendar = eventStore.defaultCalendarForNewReminders()

    do {
        try eventStore.save(reminder,
                            commit: true)
    } catch let error {
        print("Reminder failed with error \(error.localizedDescription)")
    }

}



override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

  // get permission
    eventStore.requestAccess(to: EKEntityType.reminder, completion:
        {(granted, error) in
            if !granted {
                print("Access to store not granted")
            }
    })

 // you need calender's permission for the reminders as they live there
    calendars = eventStore.calendars(for: EKEntityType.reminder)

    for calendar in calendars as [EKCalendar] {
        print("Calendar = \(calendar.title)")
    }

}


override func viewWillAppear(_ animated: Bool) {
}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}
Run Code Online (Sandbox Code Playgroud)