我无法弄清楚为什么Xcode会抛出错误"额外的参数'选择器'在电话中。"方法签名很好,没有额外的选择器'论点。此外,自动完成方法会启动方法,但是按Option键单击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() {
}
}
答案 0 :(得分:2)
尝试使用true
代替TRUE
。 TRUE
未在Swift中定义,因此调用无法编译。 Swift错误是晦涩的 - 它通常无法获得正确的失败点。
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector:Selector("updateTimeLabel"), userInfo: NSDate(), repeats: true)
在Playground中运行良好。
更新的
它也可能值得指出Selector()
'功能'是多余的 - 函数的字符串名称 - 在这种情况下为"updateTimeLabel"
- 同样有效。
答案 1 :(得分: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
所以,如果这不是你的问题,我建议查看每个参数,看看它是否是正确的类型。