一尘不染

'ViewController'类没有快速初始化方法

swift

当我这样做时,从编译器得到投诉

class ViewController: UIViewController {

    var delegate : AppDelegate
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //self.appDelegate = UIApplication.sharedApplication().delegate;

    }

    @IBAction func getData(sender : AnyObject) {

    }

    @IBAction func LogOut(sender : AnyObject) {
    }
}

但是,如果我只添加 在如下所示的 AppDelegate 末尾,错误消失了。

class ViewController: UIViewController {

    var delegate : AppDelegate?
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //self.appDelegate = UIApplication.sharedApplication().delegate;

    }

    @IBAction func getData(sender : AnyObject) {

    }

    @IBAction func LogOut(sender : AnyObject) {
    }
}

optional 除非我错了,否则我看不到与此错误相关的关键字。


阅读 239

收藏
2020-07-07

共1个答案

一尘不染

该错误可以得到改善,但是第一个版本的问题是您有一个成员变量,该成员变量delegate没有默认值。Swift中的所有变量必须始终具有一个值。这意味着您必须在没有的初始化程序中进行设置,也可以在线提供默认值。

当您将其设为可选时,nil默认情况下允许它为默认值,而无需显式为其提供值或对其进行初始化。

2020-07-07