2017-12-17 10 views
-3

Ich habe Xcode und swift vor ein paar Jahren und bin jetzt zurückgekehrt und ich versuche, einen Timer zu machen, die eine Prozedur jede Sekunde ausführen. Aber mit dieser neuen Swift und Xcode 9.2, NSTimer und Timer.ScheduledTimer nicht mehr existieren und ich kann keine Dokumentation finden, wie Sie einen Timer in dieser neuen Version von Xcode machen. Kann mir jemand helfen und mir sagen, wie ich das mache? Danke im Voraus.xcode 9.2 iOS Swift-Timer

+1

Zeigen Sie uns etwas Code. Vielleicht könnten wir darauf hinweisen, was passiert. – dfd

Antwort

0

In Swift 4, sollten Sie 'Timer' verwenden:

var timer: Timer! 
timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(runTimedCode), userInfo: nil, repeats: true) 

In Ihrem Fall sollten Sie setzen 'wiederholt' auf true. Stellen Sie sicher, dass Sie Ihre Timer ungültig machen, wenn Sie mit ihm fertig sind:

timer.invalidate() 

Put „@obj“ vor Ihrer Funktion. Und du bist bereit zu gehen.

@obj fun runTimedCode() { 
    // do your stuff 
} 

Viel Glück!

0

Timer.scheduleTimer existiert noch. Versuchen Sie zu schreiben.

+0

Entschuldigung, ich habe Xcode neu gestartet und es funktioniert jetzt. –

-2

Sie benötigen einen Timer auf eine Laufschleife hinzuzufügen:

let aTimer = Timer(timeInterval: 1, repeats: true, block: { (timer) in 
    //do things. Don't forget about retain cycles. 
}) 
RunLoop.current.add(aTimer, forMode: .defaultRunLoopMode) 

Edit:

Meine schlecht, nicht die Frage nach dem geplanten Timer wurde nicht bemerkt. Danke an David Rönnqvist, dass er mich bemerkt und korrigiert hat.

+0

Ein [zeitgesteuerter Timer] (https://developer.apple.com/documentation/foundation/timer/2091889-scheduledtimer) ist bereits in der aktuellen Ausführungsschleife im Standardmodus geplant. –

Verwandte Themen