我有一个用于选择时间(不是日期)的UIdatepicker。一旦选择了时间,我需要检查它是否存储在手机时钟中的当前时间,如果不存在则再检查,直到它执行此代码:
takephoto = true
示例:我在上午10:29打开应用程序,我选择10:31作为时间,在10:31执行take-hot = true
。
我看了this个问题,但它比较的是日期而不是时间。非常感谢任何帮助。
我也尝试过使用此代码但它无法正常运行。我需要计时器准确(在实际时间的一秒内),此代码仅在一分钟内(实际时间内)起作用:
var timercount = Timer()
viewdidload()
{
timercount = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(Check), userInfo: nil, repeats: true)
}
Func Check()
{
let nowdate = NSDate()(two date declare global Var)
let date2 = datePicker?.date
(chek the Time How Much Time Remain)
let elapsed = date2?.timeIntervalSince(nowdate as Date)
if Int(elapsed!) == 0
{
takePhoto = true
}
}
答案 0 :(得分:3)
通过NSDate
让你复杂化。使用Swift的原生Date
:
func check() {
let fireDate = datePicker.date
if fireDate < Date() {
takePhoto = true
}
}
另外,你应该避免这种情况:
if Int(elapsed!) == 0 { } // don't
原因是计时器可能错过一个节拍(由于用户退出应用程序,系统太忙,舍入错误等),使得该条件未满足。始终检查现在是否超过fireDate
,如果是,请拍摄照片。如果您只想拍摄一次照片,请添加另一个属性来表示,如下所示:
if fireDate < Date() && !photoTaken {
takePhoto = true
photoTaken = true
}