2016-03-19 7 views
2

Ich habe gesucht, bevor Sie die Frage gestellt, aber nichts gefunden. Ich verwende diesen Code eine Benachrichtigung in meiner App zu planen:Empfangen UILocalNotification nach dem Hinzufügen in Swift

let firstFormatter = NSDateFormatter() 
    firstFormatter.dateFormat = "MMMM, dd, HH:mm" 

    let date = "\(dueDateTxtField.text) \(notificationTimeTxtField.text)" 

    let fireDate = firstFormatter.dateFromString(date) 

    let realNotification = UILocalNotification() 
    realNotification.fireDate = fireDate 
    realNotification.soundName = UILocalNotificationDefaultSoundName 
    realNotification.alertTitle = "Homework reminder" 
    realNotification.alertBody = "You have a pending \(subjectTxtField.text) homework for tomorrow." 


    let secondFormatter = NSDateFormatter() 
    secondFormatter.dateFormat = "yyyy" 

    let falseNotification = UILocalNotification() 
    falseNotification.fireDate = secondFormatter.dateFromString("2020") 
    falseNotification.soundName = UILocalNotificationDefaultSoundName 
    falseNotification.alertTitle = "This notification will never get to you" 
    falseNotification.alertBody = "Never" 

    if notifyMeSegmentedControl.selectedSegmentIndex == 0 { 
     UIApplication.sharedApplication().scheduleLocalNotification(realNotification) 
    } else { 
     UIApplication.sharedApplication().scheduleLocalNotification(falseNotification) 
    } 

ich ein UISegmentedControl bin mit so kann der Benutzer wählen, um die Benachrichtigung zu erhalten oder nicht. Die Sache ist die, sobald ich eine neue Hausaufgabe hinzufüge (die App ist eine Hausaufgaben-App, wo Sie einen Betreff, eine Beschreibung usw. hinzufügen), bekomme ich bereits die Benachrichtigung, auch wenn ich "notificationTimeTxtField" auf einen Zeitpunkt setze nicht jetzt.

Bitte sagen Sie mir, was ich falsch mache. Vielen Dank im Voraus!

EDIT: Ich habe versucht, das FEUERDATUM zu drucken, und es ist NIL !! Ich habe keine Ahnung warum, es gibt Text in den Textfeldern!

+1

Wenn Sie Ihr Feuerdatum in der Konsole ausdrucken, ist es ein Datum in der Zukunft? Auch für den Fall, dass der Benutzer keine Benachrichtigung erhalten möchte, möchte wahrscheinlich UIApplication.sharedApplication() verwenden. CancelAllLocalNotifications() –

+0

Ich habe es jetzt versucht und es druckt nil !!! Wie ist das möglich? –

+0

formatieren Sie die Zeichenfolge nicht korrekt, um das Datum zu konvertieren. Was ist dueDateTextField und notificationTimeTextField? Sind sie nicht genau wie Ihr Datumsformat –

Antwort

0

Ich reparierte es. Das Problem war, dass das dueDateTxtField wie folgt formatiert war: "MMMM, dd, yyyy", und ich versuchte es nur wie "MMMM, dd" zu formatieren. Also habe ich es behoben, indem ich beide mit dem gleichen Format formatiere und es funktioniert perfekt.