2014-09-29 66 views
2

我無法弄清楚爲什麼Xcode在調用中拋出錯誤「額外參數」選擇器。方法簽名很好,沒有額外的「選擇器」參數。此外,自動完成使方法,但選項單擊scheduledTimerWithTimeInterval說「沒有快速幫助」,字體是黑色而不是紫色,就好像編譯器不識別它。這裏是代碼:NSDate錯誤使用scheduledTimerWithTimeInterval:額外參數'選擇器'在調用

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var timerLabel: UILabel! 
    @IBOutlet weak var startButton: UIButton! 
    @IBOutlet weak var stopButton: UIButton! 
    var timer = NSTimer() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     startButton.layer.cornerRadius = 5.0 
     stopButton.layer.cornerRadius = 5.0 

     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    @IBAction func didPressStartButton(sender: AnyObject) { 

    timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector:Selector("updateTimeLabel"), userInfo: NSDate(), repeats: TRUE) 

    } 
    func updateTimerLabel() { 


    } 
} 

回答

2

嘗試true而不是TRUE。在Swift中沒有定義TRUE,所以調用不能編譯。 Swift錯誤是神祕的 - 它往往無法獲得正確的失敗點。

timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector:Selector("updateTimeLabel"), userInfo: NSDate(), repeats: true) 

在遊樂場裏工作得很好。

更新 這也許值得指出的是,也將Selector()「功能」是多餘的 - 函數的字符串名稱 - 在這種情況下"updateTimeLabel" - 同樣適用。

+0

工作正常!我討厭這些完全不清楚的錯誤。這比找出值得的時間花費更多的時間。謝謝! – ShouldHaveBeen 2014-09-29 17:19:08

0

我也收到這個錯誤,當我有在第一參數這樣一個無效參數:

var delayHighlight = 2 
    var theDelay = fastPlay ? 0.0 : delayHighlight 
    if playerRank > aiRank { 
     var timer = NSTimer.scheduledTimerWithTimeInterval(theDelay,target:self,selector:"showPlayerOutline",userInfo:nil,repeats:false) 
    } 

的問題已得到解決,因爲delayHighlight被被視爲一個整數,並且因此,可變theDelay太被看作作爲整數。更改第一行:

var delayHighlight = 2.0 

所以,如果這不是你的問題,我建議在看每一個參數,看它是否是正確的類型。

相關問題