2016-02-14 36 views
0

我想在用户输入区域时创建提醒。该代码适用于在应用程序打开时创建提醒。但是当我在后台调用相同的代码时,我得到致命错误:意外地发现零,同时展开一个可选值。下面的代码在AppDelegate中被调用。在iOS应用程序的背景中设置提醒

var eventStore: EKEventStore! 
func locationManager(manager: CLLocationManager, didEnterRegion region: CLRegion) { 
       let reminder = EKReminder(eventStore: self.eventStore) //This is where I get the error 
       let date = NSDate() 
       reminder.title = "Do you have your bags?" 
       let dueDateComponents = dateComponentFromNSDate(date.dateByAddingTimeInterval(Double(secondReminderStores) * 60.0)) 
       reminder.dueDateComponents = dueDateComponents 
       reminder.calendar = self.eventStore.defaultCalendarForNewReminders() 
       do { 
        try self.eventStore.saveReminder(reminder, commit: true) 
       }catch{ 
        print("Error creating and saving new reminder : \(error)") 
       } 

回答

0

这条线:

var eventStore: EKEventStore! 

...创建eventStore变量(属性),并设置其类型,但没有任何EKEventStore实例值实际分配给它。因此eventStorenil,因为这是任何未初始化的可选的默认值。您已经显示没有其他代码曾经为其分配任何EKEventStore实例值。因此,它是仍然nil时,这条线走来:

let reminder = EKReminder(eventStore: self.eventStore) 

...等你崩溃。一切都非常好,整洁而合乎逻辑。