当我这样做时,从编译器得到投诉
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 除非我错了,否则我看不到与此错误相关的关键字。
optional
该错误可以得到改善,但是第一个版本的问题是您有一个成员变量,该成员变量delegate没有默认值。Swift中的所有变量必须始终具有一个值。这意味着您必须在没有的初始化程序中进行设置,也可以在线提供默认值。
delegate
当您将其设为可选时,nil默认情况下允许它为默认值,而无需显式为其提供值或对其进行初始化。
nil