parameters - property - unrecognized selector sent to instance swift
Cómo reparar un error con un Swift NSTimer llamando a su selector (1)
Obtengo un error de tiempo de ejecución de:
2014-07-15 16: 49: 44.893 TransporterGUI [1527: 303] - [_ TtC14TransporterGUI11AppDelegate printCountdown]: selector no reconocido enviado a la instancia 0x10040e8a0
cuando utilizo el siguiente código Swift para disparar un temporizador:
@IBAction func schedule(sender : AnyObject) {
var startTime = startDatePicker.dateValue.timeIntervalSinceDate(NSDate())
var endTime = endDatePicker.dateValue.timeIntervalSinceDate(startDatePicker.dateValue)
var startDate = NSDate.date()
let params = ["startTime": startTime, "startDate": startDate]
var counter = NSTimer.scheduledTimerWithTimeInterval(1.0, target:self, selector:Selector("printCountdown"),
userInfo:params, repeats:true)
}
func printCountdown(timer: NSTimer) {
var userInfo = timer.userInfo as NSDictionary
var startTime = userInfo["startTime"] as NSTimeInterval
var startDate = userInfo["startDate"] as NSDate
var elapsedTime: NSTimeInterval = NSDate.date().timeIntervalSinceDate(startDate)
var remainingTime: NSTimeInterval = startTime - elapsedTime;
if (remainingTime <= 0.0) {
timer.invalidate()
transferLabel.title = "No transfer scheduled"
}
transferLabel.title = remainingTime.description
}
Por extraño que parezca, si cambio la firma de la función printCountdown para no tener parámetros, la función se llama apropiadamente, pero luego no tengo forma de acceder al objeto del temporizador que hizo la llamada.
¡Gracias por adelantado!
Su selector debe ser "printCountdown:", con un punto de terminación para indicar que el selector toma un parámetro.