2017-03-15 4 views
0

Je souhaite enregistrer des rappels à l'emplacement des rappels par défaut. Mais quand je presse mon bouton je reçois une erreur fatale: inattendue trouvé nulle en déballant une valeur facultative ... Je suis assez nouveau à cela et la plupart des exemples que je localisons sont trop compliquées ou non à Swift 3.Swift 3 Créer un rappel 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)") 
    } 

    } 
} 

Répondre

2

Comme c'est un simple morceau de code, j'ai pensé que je posterais ma réponse après que je l'ai compris pour les futurs swifters. J'aime toujours les exemples simples.

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


}