2014-11-23 58 views
2

當我使用的NSTimer一個時間間隔參數不允許變量

timer = NSTimer.scheduledTimerWithTimeInterval(0.75, target: self, selector: Selector("drawInTime"), userInfo: nil, repeats: false) 

它工作正常,但如果我想使用(而非0.75)的變量爲一個時間間隔參數

var waitTime = CGFloat(numberOMiliseconds)/1000.0 
timer = NSTimer.scheduledTimerWithTimeInterval(timeInterval: waitTime, target: self, selector: Selector("drawInTime"), userInfo: nil, repeats: false) 

timer = NSTimer.scheduledTimerWithTimeInterval(waitTime, target: self, selector: Selector("drawInTime"), userInfo: nil, repeats: false) 

然後我得到以下錯誤「Swift編譯器錯誤:額外參數'選擇器'在調用中」。 有人可以幫忙嗎?

回答

3

如果你看一下scheduledTimerWithTimeInterval簽名:

class func scheduledTimerWithTimeInterval(ti: NSTimeInterval, target aTarget: AnyObject, selector aSelector: Selector, userInfo: AnyObject?, repeats yesOrNo: Bool) -> NSTimer 

您發現該方法沒有第一個參數的外部名稱(這對方法的默認),所以你不必使用timeInterval外部名稱。

而且,其預期的類型爲NSTimeInterval,這是一個Double typealias,但你傳遞一個CGFloat

所以,你應該改變你的代碼:

var waitTime = Double(numberOMiliseconds)/1000.0 
timer = NSTimer.scheduledTimerWithTimeInterval(waitTime, target: self, selector: Selector("drawInTime"), userInfo: nil, repeats: false) 
+0

感謝這個,它的工作原理!這很容易,但錯誤信息不適應,它應該是「錯誤的類型參數!」 – Swiftiti 2014-11-23 11:16:09

+0

我同意 - 但我認爲它發生了,編譯器試圖將你的調用映射到幾個重載之一,因爲沒有預期的參數具有'selector'外部名稱。 – Antonio 2014-11-23 12:08:20