Lassen Sie uns sagen, ich habe eine View-Controller mit Code, den ich zu einer bestimmten Zeit ausführen möchte, sagen 14.00 Uhr. Was ich will, ist, dass, wenn der Benutzer den View-Controller um 1:58 Uhr öffnet, der Code warten und kontinuierlich die Zeit überprüfen wird, die sich genau um 14:00 Uhr ausführt. Gibt es eine Möglichkeit, dies in Swift 4 zu tun, vielleicht mit einem Timer?Mit einem Code-Block warten auf eine bestimmte Zeit in iOS
0
A
Antwort
1
Sie können rund um diese Weise gehen, um das Ergebnis zu erzielen:
override func viewDidLoad() {
super.viewDidLoad()
let dateFormatter = DateFormatter()
/*The accepted DateFormat*/
dateFormatter.dateFormat = "MM-dd-yyyy HH:mm"
/*My Date String to run the code at*/
let dateString = "12-06-2017 15:41"
let date = dateFormatter.date(from: dateString)
/*Now find the time differnce from now*/
let secondsFromNowToFinish = date?.timeIntervalSinceNow
DispatchQueue.main.asyncAfter(deadline: .now() + secondsFromNowToFinish!, execute: {
print ("Hello Future.")
})
}
Referenzen:
Glücklich Codierung. Ich hoffe es hilft. Bitte entfernen Sie die Zwangsauswicklungen.
-1
über DispatchQueue
Beispiel lesen:
// Delay 2 seconds
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
// your code
}
Hinweis: Ihre Anwendung muss aktiv sein. Auch Sie können einen Blick auf Background modes tutorial
1
Sie können die Anzahl der Sekunden zwischen dem zukünftigen Zeitpunkt herauszufinden und jetzt und entweder GCD oder Timer für die Einrichtung Ihres zukünftiges Ereignis verwenden:
let futureDate = ISO8601DateFormatter().date(from: "2018-1-1T00:00:00Z")!
DispatchQueue.main.asyncAfter(deadline: .now() + futureDate.timeIntervalSinceNow) {
print("Its the future!")
}
oder
let futureDate = ISO8601DateFormatter().date(from: "2018-1-1T00:00:00Z")!
let timer = Timer.scheduledTimer(withTimeInterval: futureDate.timeIntervalSinceNow, repeats: false) {
print("Its the future!")
}
Timer ist einfacher, zu löschen und neu planen:
timer.invalidate()
1
Sie einen Timer mit einem Feuer Datum zum Runloop hinzufügen:
{
let dateOfExecution = Date(timeIntervalSince1970: <number of seconds from 1970-01-01-00:00:00 to your date of execution>)
let timer = Timer(fireAt: dateOfExecution, interval: 0, target: self, selector: #selector(codeToExecute), userInfo: nil, repeats: false)
RunLoop.main.add(timer, forMode: RunLoopMode.commonModes)
}
@objc func codeToExecute() {
<Your code to run>
}
Siehe Apple-docs: https://developer.apple.com/documentation/foundation/timer/1415700-init
Verwandte Themen
- 1. JavaScript: Warten auf Ende für bestimmte Zeit
- 2. Warten auf eine bestimmte Dauer in Cocoa
- 3. warten, bis eine bestimmte Zeit in UTC in Android
- 4. Pygame warten bestimmte Zeit, bis etwas passiert
- 5. Threading mit iOS und Warten auf Funktionsvervollständigung
- 6. warten Sie eine Zeit
- 7. Matlab: warten Sie auf bestimmte Zeit für Mausklick, dann weiter
- 8. Eingezäunter Codeblock in einem anderen umzäunten Codeblock
- 9. iOS - Warten auf eine Abfrage abgeschlossen
- 10. TextMate entspricht einem Codeblock
- 11. Zeitstempel in eine bestimmte Zeit in eine bestimmte Zeitzone umwandeln
- 12. Wie Python warten auf Eingabe, bis Eingabe für eine bestimmte Zeit unverändert
- 13. Parallelität: Warten Sie, bis der allgemeine Codeblock fertig ist
- 14. Entity Framework 6 - Gesperrte Zeit Warten auf eine Verbindung
- 15. Wie auf bestimmte Entity zu warten, speichert/Updates in CoreData
- 16. Einen Codeabschnitt für eine bestimmte Zeit in C# ausführen?
- 17. Warten auf eine Methodenausführung
- 18. setInterval und warten auf bestimmte Bedingungen
- 19. Warten auf Hintergrund-Thread für eine zufällige Zeit
- 20. eine globale Variable in einem Schleife Codeblock in R
- 21. C# Gebäude eine Aktion Expression mit einem Codeblock
- 22. Wie Bild für bestimmte Zeit in einem Video mit ffmpeg
- 23. Wie schränkt man TcpClient ein, um auf eine Verbindung oder einen Client für eine bestimmte Zeit zu warten, statt auf die Annahme von Clients zu warten?
- 24. Auf bestimmte zu ladende Elemente warten
- 25. Festlegen eines NSDate für ein bestimmtes Datum, eine bestimmte Zeit und eine bestimmte Zeitzone
- 26. WPF - Maus für eine bestimmte Zeit erkennen
- 27. in App Kauf ios mit "Warten auf Review" Zustand
- 28. Warten auf eine Zustandsvariable?
- 29. Warten auf eine asynchrone Konfiguration in einem Komponententest, in Dart?
- 30. iOS Unit Testing: Warten auf Zeitintervall mit Erwartungen
Diese Antwort ist nicht hilfreich, da sie nicht die Ausführung der App zu einem bestimmten Zeitpunkt, etwa 14 Uhr, betrifft. Die Dispatch-Warteschlange fügt einfach eine Verzögerung hinzu. Der Start zur gewünschten Zeit erfordert zusätzliche Funktionen, die @ Nicolas Buquet bereitgestellt hat, um die Differenz zwischen der aktuellen Uhrzeit und der gewünschten Startzeit zu berechnen. – ch1maera