Arrays 为什么我的计时器每秒倒数3?
我有一个倒计时的计时器。我在viewDidLoad方法中触发计时器,在这里我还从Parse查询时间变量 以下是我的代码,其中计时器功能为:Arrays 为什么我的计时器每秒倒数3?,arrays,swift,nsdate,Arrays,Swift,Nsdate,我有一个倒计时的计时器。我在viewDidLoad方法中触发计时器,在这里我还从Parse查询时间变量 以下是我的代码,其中计时器功能为: var createdAt = object.createdAt if createdAt != nil { let calendar = NSCalendar.currentCalendar() let comps = calendar.components(
var createdAt = object.createdAt
if createdAt != nil {
let calendar = NSCalendar.currentCalendar()
let comps = calendar.components([.Hour, .Minute, .Second], fromDate: createdAt as NSDate!)
let hour = comps.hour * 3600
let minute = comps.minute * 60
let seconds = comps.second
self.timerInt.append(hour + minute + seconds)
var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("countDown"), userInfo: nil, repeats: true)
}
}
}
})
self.tableView.reloadData()
}
我尝试过改变self.tableView.reloadData(),因为我假设这是一个reloadData问题
这是我的倒计时功能:
func countDown() {
//timerInt is an array where I'm storing the Int values.
for i in 0 ..< timerInt.count {
let hours = timerInt[i] / 3600
let minsec = timerInt[i] % 3600
let minutes = minsec / 60
let seconds = minsec % 60
print(String(format: "%02d:%02d:%02d", hours, minutes, seconds))
timerInt[i]--
}
self.tableView.reloadData()
}
你知道是什么让它触发了3x吗 我真蠢。意识到如果我从解析中查询3个对象,秒数将倒数3。如果我查询4,那么秒数倒数4 问题是我在哪里触发计时器方法:
var timer=NSTimer.scheduledTimerWithTimeInterval(1,target:self,selector:selector(“倒计时”),userInfo:nil,repeats:true)
我需要在我质疑的地方之外触发它。因为如果它是在那里被触发的,那么它是被我查询的对象数量触发的
现在,我将计时器变量设置为这样,它可以工作:):
注意,}
来自我的viewDidLoad中的其他闭包
let hours = timerInt[indexPath.row] / 3600
let minsec = timerInt[indexPath.row] % 3600
let minutes = minsec / 60
let seconds = minsec % 60
//defining the time
myCell.secondLabel.text = String(format: "%02d:%02d:%02d", hours, minutes, seconds)
//formatting the time
return myCell
var createdAt = object.createdAt
if createdAt != nil {
let calendar = NSCalendar.currentCalendar()
let comps = calendar.components([.Hour, .Minute, .Second], fromDate: createdAt as NSDate!)
let hour = comps.hour * 3600
let minute = comps.minute * 60
let seconds = comps.second
self.timerInt.append(hour + minute + seconds)
}
}
}
var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("countDown"), userInfo: nil, repeats: true)
})
self.tableView.reloadData()
}