2016-05-31 8 views
0

Ich möchte eine Funktion myTestFunction (Tag) aufrufen, da Tag ein Int ist, von einem NSTimer.Swift NSTimer Variable Syntax übergeben

NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(ViewController.myTestFunction(_:)), userInfo: day, repeats: true) 

Der Xcode Compiler hat mich auf die obige Syntax gefragt werden, aber wenn ich Tests in der func gesetzt scheint es nicht aufgerufen werden. Irgendwelche Ideen?

Antwort

0

Die im Parameter selector angegebene Methode akzeptiert nur einen Parameter, der vom Typ NSTimer sein muss. Die Dokumentation sagt: Der Timer übergibt sich als das Argument.

func myTestFunction(timer : NSTimer) { 

Alles andere (abgesehen von keinem Parameter) funktioniert nicht.

Aber Sie können Ihre geben integer über userInfo zum Beispiel

let day = timer.userInfo as! Int 
+0

Ich dachte, die Idee der userinfo erhalten: Option war, damit Sie Variable (n)/Wörterbücher für die Funktion von NSTimer eingeleitet passieren? –

+0

Ja, das ist der richtige Weg, aber nicht über den direkten Parameter wie 'testFunction (day) '. Rufen Sie das userInfo-Objekt mit 'timer.userInfo' ab. Ich habe die Antwort aktualisiert. – vadian

+0

Sorry, ich bin dick, was Sie vorschlagen, scheint das typische NSTimer-Konstrukt zu verlieren (zB NSTimer.scheduledTimerWithTimeInterval (0.1, ..) also nicht sehen, wo ich es das Timer-Intervall oder die Wiederholung usw. sagen –