Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 倒数计时_Ios_Swift_Xcode6_Nstimer_Countdown - Fatal编程技术网

Ios 倒数计时

Ios 倒数计时,ios,swift,xcode6,nstimer,countdown,Ios,Swift,Xcode6,Nstimer,Countdown,我的应用程序要求我从第一次启动开始倒数天。如果有人第一次启动我的应用程序,我想计算午夜12点后的第一天(当然使用设备时钟),然后是第二天。。。并在第21天之后执行一项操作。不管这个人是关闭应用程序还是关掉手机。当应用程序重新启动时,它会自动检测已经过了多少天 有人知道如何实现这一点吗。我正在考虑NStimer,但有点困惑。我想您应该使用UILocalNotification。这将允许您提醒用户,无论您的应用程序是否处于活动状态 请参考文档,进行一次试用,如果遇到问题无法找到答案,请询问新的堆栈溢

我的应用程序要求我从第一次启动开始倒数天。如果有人第一次启动我的应用程序,我想计算午夜12点后的第一天(当然使用设备时钟),然后是第二天。。。并在第21天之后执行一项操作。不管这个人是关闭应用程序还是关掉手机。当应用程序重新启动时,它会自动检测已经过了多少天


有人知道如何实现这一点吗。我正在考虑NStimer,但有点困惑。

我想您应该使用
UILocalNotification
。这将允许您提醒用户,无论您的应用程序是否处于活动状态


请参考文档,进行一次试用,如果遇到问题无法找到答案,请询问新的堆栈溢出问题。

我认为您需要使用
UILocalNotification
。这将允许您提醒用户,无论您的应用程序是否处于活动状态


请参考文档,进行一次试用,如果遇到问题无法找到答案,请询问新的堆栈溢出问题。

我认为您需要使用
UILocalNotification
。这将允许您提醒用户,无论您的应用程序是否处于活动状态


请参考文档,进行一次试用,如果遇到问题无法找到答案,请询问新的堆栈溢出问题。

我认为您需要使用
UILocalNotification
。这将允许您提醒用户,无论您的应用程序是否处于活动状态


请参考文档,进行一次尝试性实施,如果遇到问题无法找到答案,请询问新的堆栈溢出问题。

好的,在操场上花了一段时间尝试了一些东西后,我想出了一个非常有效的解决方案。所以,如果有人试图解决类似的问题,这里是我的解决方案

    func checkElapsedDay (){

    //make sure the date register only run 1 time.
    if NSUserDefaults.standardUserDefaults().boolForKey("firstLaunch"){

        lauchDate =  NSUserDefaults.standardUserDefaults().objectForKey("start")! as! NSDate
        endDate = NSUserDefaults.standardUserDefaults().objectForKey("end")! as! NSDate
    }
    else{

        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstLaunch")
        NSUserDefaults.standardUserDefaults().synchronize()

        endDate = lauchDate.dateByAddingTimeInterval(1814400) // 1814400 = 21 days
        NSUserDefaults.standardUserDefaults().setObject(lauchDate, forKey: "start")
        NSUserDefaults.standardUserDefaults().setObject(endDate, forKey: "end")
    }

    var today = NSDate()
    let compareResult = today.compare(endDate)
    let cal = NSCalendar.currentCalendar()
    let unit:NSCalendarUnit = .CalendarUnitDay
    let components = cal.components(unit, fromDate: today, toDate: endDate, options: nil)
    let biss = cal.compareDate(today, toDate: endDate, toUnitGranularity: nil)
    var bbb = components.day
    daysleft.image = UIImage(named: "\(bbb).png") //change the remaining day stamp

}

好吧,在操场上摆弄了一段时间,试了几样东西后,我想出了一个完美的解决方案。所以,如果有人试图解决类似的问题,这里是我的解决方案

    func checkElapsedDay (){

    //make sure the date register only run 1 time.
    if NSUserDefaults.standardUserDefaults().boolForKey("firstLaunch"){

        lauchDate =  NSUserDefaults.standardUserDefaults().objectForKey("start")! as! NSDate
        endDate = NSUserDefaults.standardUserDefaults().objectForKey("end")! as! NSDate
    }
    else{

        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstLaunch")
        NSUserDefaults.standardUserDefaults().synchronize()

        endDate = lauchDate.dateByAddingTimeInterval(1814400) // 1814400 = 21 days
        NSUserDefaults.standardUserDefaults().setObject(lauchDate, forKey: "start")
        NSUserDefaults.standardUserDefaults().setObject(endDate, forKey: "end")
    }

    var today = NSDate()
    let compareResult = today.compare(endDate)
    let cal = NSCalendar.currentCalendar()
    let unit:NSCalendarUnit = .CalendarUnitDay
    let components = cal.components(unit, fromDate: today, toDate: endDate, options: nil)
    let biss = cal.compareDate(today, toDate: endDate, toUnitGranularity: nil)
    var bbb = components.day
    daysleft.image = UIImage(named: "\(bbb).png") //change the remaining day stamp

}

好吧,在操场上摆弄了一段时间,试了几样东西后,我想出了一个完美的解决方案。所以,如果有人试图解决类似的问题,这里是我的解决方案

    func checkElapsedDay (){

    //make sure the date register only run 1 time.
    if NSUserDefaults.standardUserDefaults().boolForKey("firstLaunch"){

        lauchDate =  NSUserDefaults.standardUserDefaults().objectForKey("start")! as! NSDate
        endDate = NSUserDefaults.standardUserDefaults().objectForKey("end")! as! NSDate
    }
    else{

        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstLaunch")
        NSUserDefaults.standardUserDefaults().synchronize()

        endDate = lauchDate.dateByAddingTimeInterval(1814400) // 1814400 = 21 days
        NSUserDefaults.standardUserDefaults().setObject(lauchDate, forKey: "start")
        NSUserDefaults.standardUserDefaults().setObject(endDate, forKey: "end")
    }

    var today = NSDate()
    let compareResult = today.compare(endDate)
    let cal = NSCalendar.currentCalendar()
    let unit:NSCalendarUnit = .CalendarUnitDay
    let components = cal.components(unit, fromDate: today, toDate: endDate, options: nil)
    let biss = cal.compareDate(today, toDate: endDate, toUnitGranularity: nil)
    var bbb = components.day
    daysleft.image = UIImage(named: "\(bbb).png") //change the remaining day stamp

}

好吧,在操场上摆弄了一段时间,试了几样东西后,我想出了一个完美的解决方案。所以,如果有人试图解决类似的问题,这里是我的解决方案

    func checkElapsedDay (){

    //make sure the date register only run 1 time.
    if NSUserDefaults.standardUserDefaults().boolForKey("firstLaunch"){

        lauchDate =  NSUserDefaults.standardUserDefaults().objectForKey("start")! as! NSDate
        endDate = NSUserDefaults.standardUserDefaults().objectForKey("end")! as! NSDate
    }
    else{

        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstLaunch")
        NSUserDefaults.standardUserDefaults().synchronize()

        endDate = lauchDate.dateByAddingTimeInterval(1814400) // 1814400 = 21 days
        NSUserDefaults.standardUserDefaults().setObject(lauchDate, forKey: "start")
        NSUserDefaults.standardUserDefaults().setObject(endDate, forKey: "end")
    }

    var today = NSDate()
    let compareResult = today.compare(endDate)
    let cal = NSCalendar.currentCalendar()
    let unit:NSCalendarUnit = .CalendarUnitDay
    let components = cal.components(unit, fromDate: today, toDate: endDate, options: nil)
    let biss = cal.compareDate(today, toDate: endDate, toUnitGranularity: nil)
    var bbb = components.day
    daysleft.image = UIImage(named: "\(bbb).png") //change the remaining day stamp

}

如果您使用设备时钟,用户将能够更改它,否则可能设置错误。实际上,用户更改设备时间或设置错误并不重要。我只想数一数过去的日子。我正在操场上尝试一些东西。。。还没有真正的解决办法。。。。我考虑将NStimer设置为interval,以调用一个函数,该函数每12小时(或每次应用程序重新启动时)获取设备日期,然后查找它是否与以前的缓存日期不同。。。如果是计数+1如果您使用设备时钟,用户将能够更改它,或者可能设置错误。实际上,用户更改设备时间或设置错误并不重要。我只想数一数过去的日子。我正在操场上尝试一些东西。。。还没有真正的解决办法。。。。我考虑将NStimer设置为interval,以调用一个函数,该函数每12小时(或每次应用程序重新启动时)获取设备日期,然后查找它是否与以前的缓存日期不同。。。如果是计数+1如果您使用设备时钟,用户将能够更改它,或者可能设置错误。实际上,用户更改设备时间或设置错误并不重要。我只想数一数过去的日子。我正在操场上尝试一些东西。。。还没有真正的解决办法。。。。我考虑将NStimer设置为interval,以调用一个函数,该函数每12小时(或每次应用程序重新启动时)获取设备日期,然后查找它是否与以前的缓存日期不同。。。如果是计数+1如果您使用设备时钟,用户将能够更改它,或者可能设置错误。实际上,用户更改设备时间或设置错误并不重要。我只想数一数过去的日子。我正在操场上尝试一些东西。。。还没有真正的解决办法。。。。我考虑将NStimer设置为interval,以调用一个函数,该函数每12小时(或每次应用程序重新启动时)获取设备日期,然后查找它是否与以前的缓存日期不同。。。如果是,我正在操场上尝试一些东西。。。还没有真正的解决办法。。。。我考虑将NStimer设置为interval,以调用一个函数,该函数每12小时(或每次应用程序重新启动时)获取设备日期,然后查找它是否与以前的缓存日期不同。。。如果是,我正在操场上尝试一些东西。。。还没有真正的解决办法。。。。我考虑将NStimer设置为interval,以调用一个函数,该函数每12小时(或每次应用程序重新启动时)获取设备日期,然后查找它是否与以前的缓存日期不同。。。如果是,我正在操场上尝试一些东西。。。还没有真正的解决办法。。。。我考虑将NStimer设置为interval,以调用一个函数,该函数每12小时(或每次应用程序重新启动时)获取设备日期,然后查找它是否与以前的缓存日期不同。。。如果是,我正在操场上尝试一些东西。。。还没有真正的解决办法。。。。我考虑将NStimer设置为interval,以调用一个函数,该函数每12小时(或每次应用程序重新启动时)获取设备日期,然后查找它是否与以前的缓存日期不同。。。如果是,则计算+1