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