2016-05-14 7 views
0

Ich versuche, Benachrichtigung über bestimmte gespeicherte Zeit in der Datenbank und an bestimmten Tag, der Freitag ist wie unten gezeigt, aber jedes Mal versuche ich neue Erinnerung zu speichern, sagt es mir unexpectedly found nil while unwrapping an Optional value und Ich bin sicher, dass es Daten enthält und es ist nicht Null, obwohl ich versucht, mit Null umzugehen, immer noch der App-Absturz, aber wenn ich versuche, Benachrichtigung ohne Kombination Daten wie diese localNotification.fireDate = reminders.time! feuern die App ist nicht abgestürzt und es funktioniert gut.versuchen, zwei Daten zu kombinieren verursacht App zum Absturz

Ich denke, das Problem in der Funktion combinateDate, wie kann ich dieses Problem lösen?

func combineDate(time: NSDate?) -> NSDate{ 

      let gregorianCalendar: NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 

      let time: NSDateComponents = gregorianCalendar.components([.Hour, .Minute, .Second], fromDate: time!) 
      time.timeZone = NSTimeZone.systemTimeZone() 
      let timeCombiner: NSDateComponents = NSDateComponents() 
      timeCombiner.timeZone = NSTimeZone.systemTimeZone() 
      timeCombiner.hour = time.hour 
      timeCombiner.minute = time.minute 
      timeCombiner.second = 00 
      timeCombiner.weekday = 6 
      let combinedDate: NSDate = gregorianCalendar.dateFromComponents(components3)! 

      return combinedDate 

    } 


    func createLocalNotification(){ 

     let localNotification = UILocalNotification() 

     localNotification.timeZone = NSTimeZone.systemTimeZone() 
    localNotification.fireDate = combineDate(reminders.time!) 

localNotification.alertBody = reminders.name! 

     UIApplication.sharedApplication().scheduleLocalNotification(localNotification) 




    } 

enter image description here

+0

* "I bin sicher, dass es Daten enthält und es ist nicht Null "*: Warum bist du sicher? Was sind deine Beweise? Die Fehlermeldung sagt Ihnen das genaue Gegenteil. –

+2

Versuchen Sie, beide Funktionen umzuschreiben, ohne das '!' Zu verwenden. Verwenden Sie stattdessen 'if let' und' guard let'. –

+0

gut nachdem ich die App wieder geöffnet habe, wird die Erinnerungstabelle mit der Erinnerung neu geladen, die ich versuchte zu speichern, und wenn ich diese Erinnerung öffne, lädt die Ansicht gerade gut mit Daten, die ich speicherte, wenn ich 'localNotification.fireDate = combineDate ersetze (memories.time!) 'mit' localNotification.fireDate = reminders.time! 'kein Problem passiert – User

Antwort

1

noch der Grund verursacht all diese Masse unbekannt jedoch löste ich es durch Prüfen, ob Erinnerung verwaltete Objekt nicht gleich Null ist dann Feuer Benachrichtigung versuchen

func createLocalNotification(){ 

     let localNotification = UILocalNotification() 

     localNotification.timeZone = NSTimeZone.systemTimeZone() 
if reminder != nil{ 
    localNotification.fireDate = combineDate(reminders.time!) 
} 

localNotification.alertBody = reminders.name! 

     UIApplication.sharedApplication().scheduleLocalNotification(localNotification) 




    } 
Verwandte Themen