Dawson Seibold Dawson Seibold - 4 years ago 371
Swift Question

Calculate the difference between two dates. Swift 1.2

I need a way to find what time it will be after the "unknown" amount of time for the ore to be done.

After you start the timer it needs to calculate when to send the local notification.
I need a way so the app can be completely closed and still notify them.


This is the error I get when I implement the "notificationsAllowed" code.
enter image description here

Answer Source

To calculate the endtime you can use

timerEndTime = NSDate(timeIntervalSinceNow:NSTimeInterval(oreWanted * 11))

So you get a NSDate object. Now you can fire a UILocalNotification at that calculated time:

Note: You need to ask for notification permissions when your app starts up. I have simplified this here with notificationsAllowed and soundsAllowed which are boolean variables in my AppDelegate.

let appDelegate = UIApplication.sharedApplication.delegate as! AppDelegate

if appDelegate.notificationsAllowed {
    let notification = UILocalNotification()
    notification.fireDate = timerEndTime
    notification.timeZone = NSTimeZone.defaultTimeZone()
    notification.alertBody = "Notification body text"
    notification.alertTitle = "Notification alert title"

    if appDelegate.soundsAllowed {
        notification.soundName = UILocalNotificationDefaultSoundName



Register the app for notifications in AppDelegate:

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    var notificationsAllowed = false
    var notificationSoundAllowed = false

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        let notificationSettings = UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert, categories: nil)

        return true

    func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
        if notificationSettings.types & UIUserNotificationType.Alert != nil {
            self.notificationsAllowed = true

        if notificationSettings.types & UIUserNotificationType.Sound != nil {
            self.notificationSoundAllowed = true
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download