未实现 methodSignatureForSelector:无法识别的选择器 (NSTimer)

does not implement methodSignatureForSelector: Unrecognized selector (NSTimer)

我通过以下方式在我的 Swift 应用程序中使用 NSTimer

func playEvent(eventIndex : Int){
    if (eventIndex < 2){
        let currEvent = self.eventArray[eventIndex]
        currEvent?.startEvent()
        let nextIndex = eventIndex + 1
        NSTimer.scheduledTimerWithTimeInterval((currEvent?.duration)!, target: self, selector: "playEvent(nextIndex)", userInfo: nil, repeats: true)
    }
    else if (eventIndex==2){
        self.eventArray[eventIndex]?.startEvent()
        NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "finishSentence", userInfo: nil, repeats: true)
    }
    else{
        //do nothing
    }
}

我认为问题可能是我没有 属性 使用参数调用选择器方法。如果那不可能,我该如何解决这个问题? 正在调用第一个 NSTimer 实例。这是完整的 Swift class 以供参考:https://gist.github.com/ebbnormal/79941733b82f5fe58282

选择器由方法名表示

func playEvent()

selector: "playEvent"

如果该方法只有一个参数,则添加一个冒号

func playEvent(eventIndex : Int)

selector: "playEvent:"

如果该方法有多个参数,所有参数名称连接在一起,用冒号分隔

func playEvent(eventIndex : Int, flag: Bool)

selector: "playEvent:flag:"

使用NSTimer指定直接参数来保存定时器实例。

func playEvent(timer : NSTimer)

您必须通过计时器的 userInfo 对象传递更多参数。

您不能将 nextIndex 直接传递给选择器。 NSTimer 的一种选择是通过 userInfo 传递值,例如:



    NSTimer.scheduledTimerWithTimeInterval(1, target: self, 
        selector: "mySelector:", 
        userInfo: NSNumber(integer: 999), 
        repeats: true)

    func mySelector(timer: NSTimer){
            print(timer.userInfo)
    }