我如何在设定的时间每天运行代码?迅速

时间:2016-06-29 17:50:20

标签: ios swift

我环顾四周但找不到任何答案。

任何人都知道如何在不使用NSTimer的情况下每天在12:00运行一段代码?

1 个答案:

答案 0 :(得分:2)

您可以设置调度源来执行此操作。将剩余时间保留到中午作为开始时间,并将间隔设置为每24小时。类似的东西:

let startTime = NSCalendar.currentCalendar().nextDateAfterDate(NSDate(), matchingHour: 12, minute: 0, second: 0, options: .MatchNextTime) ?? NSDate()
let startDelta = startTime.timeIntervalSinceNow * NSTimeInterval(NSEC_PER_SEC)
let periodicSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue())

dispatch_source_set_timer(periodicSource, dispatch_walltime(nil, Int64(startDelta)), 60 * 60 * 24 * NSEC_PER_SEC, NSEC_PER_SEC)
dispatch_source_set_event_handler(periodicSource) {
    print("bing bong!")
}
dispatch_resume(periodicSource)