2017-06-12 83 views
0

Swift的新功能 - 我试图在预定义的时间失效后实现简单的继续操作。但由于某种原因,我的xcode不识别Timer,并给出错误“定时器模块没有名为scheduledTimer的成员”。我无法在任何地方找到帮助。XCode无法识别Timer() - Swift 3

CODE:

import UIKit 

class ViewController: UIViewController { 

    let emptystring = String() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     var time = Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false) 
    } 

    func changeview(){ 
     self.performSegueWithIdentifier("GoToMain", sender: self) 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if (segue.identifier == "GoToMain"){ 
      let destination = (segue.destinationViewController as! UINavigationController).viewControllers[0] as! SecondView 
      destination.emptyString = emptystring 
     } 
     print("Segue Performed") 
    } 

} 

Picture也显示了我的整个代码,包括错误。注意:这不是我自己的代码。我只跟着回答问题,在下面的链接:

Xcode Swift 3: Timer and Segue View Controller Error

回答

1

Timer是斯威夫特3类型,但是从你的方法签名的其余部分来看,你似乎是用斯威夫特2.使用NSTimer在Swift 2中。


此外,为了将来的参考,除了timeInterval错字(您现在已经修复),第三个参数是selector,而不是selecter


因此,在斯威夫特2:

NSTimer.scheduledTimerWithTimeInterval(8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false) 

还是在斯威夫特3:

Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false) 
+0

即使使用NSTimer,它也会重复出现相同的错误。 p.s:我对这个愚蠢的错误非常抱歉 –

+0

@ZairaZafar在上面的修订答案中参见Swift 2和Swift 3的翻译。请注意,如果您在切割和粘贴未来堆栈溢出时发现的代码时遇到麻烦,请注释掉粘贴的代码,并尝试自己输入代码并依靠“代码补全”来获得正确的语法,标签等。 – Rob

+0

谢谢非常!这有帮助! –

1

你已经宣布的第一个参数为timerInterval但它应该是timeInterval代替。

因此改变:

var time = Timer.scheduledTimer(timerInterval: 8.0, target: self, selecter: #selector(changeview), userInfo: nil, repeats: false 

要:

var time = Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false) 
+0

如果这个问题是一个错字的结果,投票关闭问题与原因“这个问题是由于无法再现的问题或**简单的印刷错误**造成的。“而不是回答。 – JAL

+0

编辑它。错误仍然存​​在。如果这是一个争论问题,那么就会突出错误的论点。 P.s:尽管感谢您的上述修复 –