He buscado por todas partes, pero no puedo encontrar una respuesta a esta pregunta. Quiero que una función específica se ejecute a las 6:00 a. m. y a las 6:00 p. m. todos los días para un modo día/noche en mi aplicación. Esto no necesita ejecutarse en segundo plano, solo cuando la aplicación está abierta, pero también quiero realizar otras funciones de la aplicación mientras verifica la hora.
Puedes hacerlo así. Simplemente establezca una Date con el objeto Calendar . Ponga su hora específica en horas militares (de 0 a 24, siendo 0 medianoche) y ¡voilá!, si su aplicación está en primer plano y se activa la hora especificada, verá que se ejecuta la función que usó como selector.
Pruébalo y codificación feliz
override func viewDidLoad() { super.viewDidLoad() let calendar = Calendar.current let now = Date() let date = calendar.date( bySettingHour: 23, minute: 52, second: 0, of: now)! let timer = Timer(fireAt: date, interval: 0, target: self, selector: #selector(runCode), userInfo: nil, repeats: false) RunLoop.main.add(timer, forMode: RunLoop.Mode.common) } func runCode() { print("Do whatever here") }