ViewController.Type 没有名为的成员

Posted

技术标签:

【中文标题】ViewController.Type 没有名为的成员【英文标题】:ViewController.Type does not have a member named 【发布时间】:2014-11-09 09:33:27 【问题描述】:

只是一个简单的任务,但我遇到了麻烦。尝试另辟蹊径,但失败了。

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

【问题讨论】:

How to initialize properties that depend on each other的可能重复 【参考方案1】:

试试:

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

专业提示,希望得到赞赏的仅供参考:Swift 函数也应该以小写字母开头(即“timerRedraw”)。

【讨论】:

不幸的是,它没有帮助。出现同样的问题:interval not found 是的,我忘了注意您需要将两个变量放入“viewDidLoad”方法中。这正是另一个正确回答的人所说的。为此,我给了他 +1。【参考方案2】:

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

因此,您必须将分配 timer = NSTimer(interval, ...) 移动到 类,例如进入viewDidLoad。因此,timer 必须定义为 可选隐式展开可选

还要注意Selector(...) 将文字 string 作为参数,而不是方法本身。

所以这应该有效:

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 ...

【讨论】:

以上是关于ViewController.Type 没有名为的成员的主要内容,如果未能解决你的问题,请参考以下文章

无法将“ViewController.Type”类型的值转换为预期的参数类型“UIViewController”

无法将“ViewController.Type”类型的值转换为预期的参数类型“UIViewController”

无法将'ViewController.Type'类型的值转换为预期的参数类型'UIViewController'

将场景中的 rootview 更改为视图控制器?

Objc <-> Swift 通用函数的 Swift 兼容性

没有名为“硒”的模块