首页 > 解决方案 > 在需要之前如何声明变量 nil?

问题描述

我刚开始在 Swift 中使用 SQLite 并且遇到了声明问题。我想将所有内容包装在一个类中,然后我可以调用方法。

我的问题是我不知道如何声明 db,以便当我调用 Connect 时,它可以填写为在类存在时始终可用。我可以在初始化时调用 connect,但在需要之前我不想调用 Connect。当我将其编码如下时,我收到以下错误:

从初始化程序返回而不初始化所有存储的属性

class MySQL {
    var db : Connection
    var dbPath : String
    
    init() {
        dbPath = getDocumentsDirectory().absoluteString + "db.sqlite3"
    }
    
    func open(){
        do{
            db = try Connection(dbPath)}
        catch{}

        let users = Table("users")
        print(users)
    }
}

标签: swiftxcodesqlite.swift

解决方案


您可能想使用惰性属性。

惰性存储属性是在第一次使用之前不计算初始值的属性。您可以通过在声明之前编写惰性修饰符来指示惰性存储属性。

class MySQL {
    lazy var db : Connection = {
        // Make initialisation here 
    }()
    var dbPath : String

    ...
}

您可以从官方文档中阅读更多信息。


推荐阅读