2017-03-15 54 views
0

我想將提醒保存到默認提醒位置。但是,當我按下按鈕,我得到一個致命錯誤:意外發現零而展開的可選值...我很新的這一點,我找到的大多數例子過於複雜或者不斯威夫特3.Swift 3創建提醒EKEventStore

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)") 
    } 

    } 
} 

回答

2

作爲一段簡單的代碼,我想我會在爲未來的更新換代後找到答案。我總是喜歡簡單的例子。

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. 
} 


}