2017-07-13 4 views
0

Je commence une minuterie programmée en appuyant sur un bouton (en fonction)Passage des arguments creux pour une fonction de sélection pour une scheduledTimer

self.timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: Selector(ViewController.update), userInfo: nil, repeats: true) 

Je veux passthrough un ensemble de données d'argument pour la mise à jour dans le sélecteur, car J'ai besoin des données, mais elles ne sont disponibles que dans la fonction, mais je ne peux pas déclarer la fonction dans cette fonction et l'utiliser comme #selector.

donc idéalement:

func update(data: CMMotionActivity) { some code here } 

et la minuterie que comme le sélecteur non ViewController.update, mais un peu comme ViewController.update (données: myAwesomeArray)

Répondre

0

Vous pouvez utiliser userInfo

self.timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: Selector(ViewController.update(_:)), userInfo: ["data" : youData], repeats: true) 

Et l'obtenir dans votre fonction:

func update(data: Timer) { 
    let userInfo = timer.userInfo as Dictionary<String, AnyObject> 
    let data = userInfo["data"] 
    //use your data 
} 
+0

Je l'ai juste vu. – Bruce

+0

si cela vous aide à résoudre votre problème n'oubliez pas d'accepter la réponse ;-) – GIJOW