2014-09-29 61 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 

所以,如果这不是你的问题,我建议在看每一个参数,看它是否是正确的类型。

相关问题