Xcode无法识别Timer() - Swift 3

时间:2017-06-12 20:10:32

标签: ios swift timer

Swift的新手 - 我试图在预定义的时间过后实现简单的segue操作。但由于某种原因,我的Xcode没有识别Timer并给出错误“Timer模块没有名为scheduledTimer的成员”。我无处可寻。

代码:

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

3 个答案:

答案 0 :(得分:1)

您已将第一个参数声明为a = {} with open("file.txt") as f: for line in f: k,v = line.split(' ') #spacebar in file a[k.strip()] = v.strip() ,但它应该是timerInterval

所以改变:

timeInterval

要:

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

答案 1 :(得分:1)

InputView是Swift 3类型,但从其余的方法签名判断,您似乎使用的是Swift 2.在Swift 2中使用Timer

另外,为了将来参考,除了NSTimer拼写错误(您现在已经修复),第三个参数是timeInterval,而不是selector

所以,在Swift 2中:

selecter

或者在Swift 3中:

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

答案 2 :(得分:0)

还要注意,在Swift 4中,必须在计时器到期后将@objc添加到要调用的选择器中,因为调用该选择器的代码显然仍是用Objective-C编写的。

所以改变:

func changeview()

对此:

@objc func changeview()