ViewController.Type没有名为的成员

时间:2014-09-15 19:08:22

标签: xcode variables swift nstimer

这只是一项简单的任务,但我遇到了麻烦。试图采取不同的方式,但失败了。

enter image description here

如何使用声明的先前变量初始化NSTimer? var和nor都没有帮助。

2 个答案:

答案 0 :(得分:10)

属性的初始值(在您的情况下为timer)不能依赖于该类的另一个属性(在您的情况下:interval)。

因此,您必须将分配timer = NSTimer(interval, ...)移动到方法中 等级,例如进入viewDidLoad。因此,timer必须定义为 可选隐式解包可选

另请注意,Selector(...)将文字字符串作为参数,而不是方法本身。

所以这应该有效:

class ViewController: UIViewController {

    var interval : NSTimeInterval = 1.0
    var timer : NSTimer!

    func timerRedraw() {

    }

    override func viewDidLoad() {
        super.viewDidLoad()
        timer = NSTimer(timeInterval: interval, target: self, selector: Selector("timerRedraw"), userInfo: nil, repeats: true)

        // ...
    }

    // Other methods ...
}

答案 1 :(得分:0)

尝试:

var interval:NSTimeInterval = 1.0
var timer = NSTimer.scheduledTimerWithTimeInterval(interval, target: self, selector: "timerRedraw:", userInfo: nil, repeats: true)

pro-tip并希望得到赞赏的FYI:Swift函数也应该以小写字母开头(即“timerRedraw”)。