Это не хороший способ работы, но в вашем коде есть небольшие изменения:
var schedule : String = "12.19.00"
let formatter = DateFormatter()
formatter.dateFormat = "HH.mm.ss"
while true {
let date = Date()
let res = formatter.string(from: date)
if res == schedule
{
print("isequl")
break
}
sleep(10000)
}
Вы получаете текущее время только один раз, поэтому res == schedule
никогда не будет верным.И вы используете другой формат, чем ваше строковое значение.Ваша строка hh.mm.ss
и форматер hh.mm
РЕДАКТИРОВАТЬ
Для этого вам следует использовать таймер.Сначала получите временной интервал, а затем передайте его в таймере как:
let date = Date().addingTimeInterval(interval)
let timer = Timer(fireAt: date, interval: 0, target: self, selector: #selector(runCode), userInfo: nil, repeats: false)
RunLoop.main.add(timer, forMode: RunLoopMode.commonModes)