Search code examples
iosswiftuilocalnotification

Why does it return nil when I unwrap the array of strings in localNotification?


notificationTime = ["2016-05-26 16:27:17 +0000","2016-05-24 13:29:37 +0000"]
var num = 0
func locaNotification(num:Int)
{
    let dateFormatter = NSDateFormatter()
    dateFormatter.locale = NSLocale.currentLocale()
    dateFormatter.dateStyle = NSDateFormatterStyle.FullStyle

    var dateAsString =  notificationTime[num]
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
    var newDate = dateFormatter.dateFromString(dateAsString)!

It returns nil when it is unwrapped here, newDate = nil after the previous line of code!

    var arr = UIApplication.sharedApplication().scheduledLocalNotifications
    for localN:UILocalNotification in arr!
    {
        var notificationFireDate:NSDate = localN.fireDate!
        if notificationFireDate == newDate
        {
            UIApplication.sharedApplication().cancelLocalNotification(localN)
        }
    }
}

Solution

  • Your problem is that "yyyy-MM-dd HH:mm" is not right you can see this website http://nsdateformatter.com/

    I think that your string "2016-05-26 16:27:17 +0000" need to be "2016-05-26T16:27:17+0000" and your format need to be "yyyy-MM-dd'T'HH:mm:ssZ", I hope this help you