Theoretisch ist dies möglich. Das Problem ist, dass Ihre App für 24 Stunden im Vordergrund ausgeführt werden muss, was sehr unwahrscheinlich ist. Leider können Sie keine Hintergrundaufgaben einfach so ausführen.
Die Lösung:
einfach es so aussehen, wie die Funktion im Hintergrund ausführen würde. Jedes Mal, wenn die Update-Funktion aufgerufen wird, speichern Sie einfach die Int(Date().timeIntervalSince1970)
auf UserDefaults. Dies funktioniert wie ein Zeitstempel und speichert das letzte Mal, als Sie Ihre Update-Funktion aufgerufen haben. Jedes Mal, in der viewDidLoad() - Funktion (nicht sicher, ob es das gleiche auf Mac-Apps genannt, aber man kann sich vorstellen, was ich meine) Aufruf:
If let timestamp = UserDefaults.standard.integer(forKey: "yourTimestampKey") {
let currentTimestamp = Date().timeIntervalSince1970
if (currentTimestamp - timestamp) > 86400 { // number of seconds in 24 hours
// the last time your function was updated was at least 24h ago
update()
}
}
Das ist, wie können Sie es erscheinen wie sie aktualisiert wurde der Hintergrund. Ich benutze dies die ganze Zeit in meinen Apps und es funktioniert perfekt.
EDIT:
Vielleicht, falls die App in der Tat 24-Stunden-Lauf werden in einer Reihe, würde ich die obere Funktion einrichten, die Sie zum ersten Mal auch geschrieben.
In iOS ist dies nur für eine App möglich, die ständig im Vordergrund läuft. Auf MacOS solltest du besser einen Cronjob oder Hintergrunddienst verwenden. Was wollen Sie mit dieser Funktion erreichen? – clemens
Es ist eine Macos-App, die in der Statusleiste ausgeführt wird. Ich möchte, dass die Funktion überprüft, ob einige Brühformeln aktualisiert werden müssen. – Marco