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

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) {
    }
}

除非我错了,否则我看不出100个关键字与这个错误有关.

推荐答案

这个错误可以改进,但是第一个版本的问题是,您有一个成员变量delegate,它没有默认值.Swift中的所有变量必须始终有一个值.这意味着你必须在一个你没有的初始值设定项中设置它,或者你可以在线提供一个默认值.

当您将其设置为可选时,默认情况下允许它为nil,这样就不需要显式地给它一个值或初始化它.

Swift相关问答推荐

复选标记动画的问题

什么是Swift Concurrency中任务组的正常退出

启用完整并发判断以及如何解决警告

如何使用RxSwift根据数据数绘制UICollectionView单元格

体积单位从夸脱转换为杯似乎关闭了

是否在字符串属性上搜索数组和子数组?

如何使泡泡上的箭头直达封闭矩形

关闭 SwiftUI TabView 中的子视图

如何使一个 Reality Composer 场景中的分组对象可拖动?

如何裁剪图像 3:4 ?迅速

Swift 读写图片占用大量内存

如何使用 Date.ParseStrategy 在 Swift 5.6 中将字符串解析为日期?

当我必须在 Swift 中的类、 struct 和枚举之间进行 Select 时,我应该如何推理?

Swift - 获取本地日期和时间

如何在 iOS Swift 中进行多线程、并发或并行?

如何以编程方式读取 wkwebview 的控制台日志(log)

如何从 UITableViewCell 类中引用 UITableViewController?

修复 Swift 3 中的警告C-style for Statement is deprecated

如何发送静默推送通知有效负载

两个 Date 对象之间的所有日期 (Swift)