2016-02-14 62 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) 

...等你崩潰。一切都非常好,整潔而合乎邏輯。