Ios 如何使用Swift中的CoreData创建倒计时

Ios 如何使用Swift中的CoreData创建倒计时,ios,core-data,swift,nstimer,nsdata,Ios,Core Data,Swift,Nstimer,Nsdata,如何使用CoreData创建倒计时,因为我需要在swift中始终激活倒计时?我一直这样想: 如果没有,请将初始时间和日期以及结束时间保存到CoreData 目前 如果时间已经存在,则从初始时间开始倒计时 在当前时间之前保存的时间。 如果当前时间高于结束时间,则删除信息, 否则重新计算当前时间的倒计时。 这是我的相关代码,我无法比较两个数据的初始时间和结束时间 我无法从节省的时间启动NSTimer: class ViewController: UIViewController {

如何使用CoreData创建倒计时,因为我需要在swift中始终激活倒计时?我一直这样想:

如果没有,请将初始时间和日期以及结束时间保存到CoreData 目前 如果时间已经存在,则从初始时间开始倒计时 在当前时间之前保存的时间。 如果当前时间高于结束时间,则删除信息, 否则重新计算当前时间的倒计时。 这是我的相关代码,我无法比较两个数据的初始时间和结束时间 我无法从节省的时间启动NSTimer:

 class ViewController: UIViewController {  
        @IBAction func start(sender: AnyObject) {

            let date: NSDate = NSDate()
            //let time: NSTimeInterval = newDate.timeIntervalSince1970
            let calendar = NSCalendar.currentCalendar()
            let components = calendar.components(.CalendarUnitSecond | .CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitMonth | .CalendarUnitYear | .CalendarUnitDay, fromDate: date)
            var hour = components.hour
            var minute = components.minute
            var month = components.month
            var year = components.year
            var day = components.day
            var second = components.second


        let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
        let context:NSManagedObjectContext = appDel.managedObjectContext!
        let ent = NSEntityDescription.entityForName("Time", inManagedObjectContext: context)!  
        var newData = Time(entity: ent, insertIntoManagedObjectContext: context)

            var hourf = hour + 11;
            var dayf = day; 
            var monthf = month;         
            var yearf = year;

            if(hourf >= 24){

                hourf = hourf - 24;

                dayf = day + 1;
            }



            if(dayf >= 28)

            {
                //perche' è il giorno dopo il 28
                if(dayf == 29 && month == 2){

                    //febbraio

                    dayf = dayf - 28;
                    monthf = month + 1;

                }
                //mesi con 30 gg
                if((dayf == 31) && month == 11 || month == 4 || month == 6)

                {


                    dayf = dayf - 30;

                    monthf = month + 1;

                }

                if( dayf == 32){

                    dayf = dayf - 31;
                    monthf = month + 1;
                }


                else {
                }


            }


            if(monthf > 12)

            {
                monthf = monthf - 12;

                yearf = year + 1;

            }


            //fetched 

            if(yearf == year )

            {
                if(monthf == month){

                }

                if(dayf == day){

                }
                if(hourf >= hour){

                    println("finito t ore")
                }

            }


           newData.hourf = String(hourf)         
           newData.dayf = String(dayf)        
           newData.monthf = String(monthf) 
           newData.yearf = String(yearf)


            newData.minute = String(minute)         
            newData.hour = String(hour)   
            newData.day = String(day)         
            newData.month = String(month)      
            newData.year = String(year)

     println("// Start Time")

              println("Minuti")
            println(newData.minute)
               println("Ore")
            println(newData.hour)
               println("Giorno")
            println(newData.day)
                println("Mese")
            println(newData.month)
                println("Anno")
            println(newData.year)


            println("// Final Time")


            println("Minuti")
            println(newData.minute)
            println("Ore")
            println(newData.hourf)
            println("Giorno")
            println(newData.dayf)
            println("Mese")
            println(newData.monthf)
            println("Anno")
            println(newData.yearf)


         if(yearf == year )

         {
            if(monthf == month){

            }

            if(dayf == day){

            }
            if(hourf >= hour){

                       println("finito t ore")
            }

            }


            if(yearf == year )

            {
                if(monthf == month){

                }

                if(dayf >= day){

                       println("finito t gg")
                }

            }

            if(yearf == year )

            {
                if(monthf >= month){
                    println("finito t mesi")

                }

            }


            if(yearf >= year )

            {
                if(monthf >= month){
                    println("finito t anni")

                }

            }

            /*
            if(hourf < hour || dayf < day || monthf < month || yearf < year ){
                println("Non puoi ancora scrivere ! ")

            }*/


        }

        override func viewDidLoad() {
            super.viewDidLoad()
     startTimer()


        }


        var timer:NSTimer!

        var timerVal = 100

        func startTimer()
        {


            timer = NSTimer.scheduledTimerWithTimeInterval(1.0
                , target: self, selector: Selector("updateTimer:"), userInfo: nil, repeats: true)
        }


        func updateTimer(dt:NSTimer)
{  
            timerVal--

            if timerVal==0{


                println("FINISH")

            }else if timerVal<0{
                timer.invalidate()
                //Stop


            } else{
                println("\(timerVal)")
            }
        }

    }

如果使用NSDate的dateByAddingTimeInterval方法,代码可能会短得多。另外,你添加的内容肯定是不正确的。使用核心数据在这方面做得太过分了。您可以改用NSUserDefaults。