在哪里使用 SwiftUI 为用户初始化 sqlite 数据库?

Where to initialize sqlite database for a user with SwiftUI?

我有这个初始化数据库的函数(基本上是从SQLite.swift的documentation复制过来的)。

func createDB() {
    let paths = FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask)
    let documentsDirectory = paths[0]
    print(documentsDirectory)
    do {
        // creates new if it doesnt exist
        let db = try Connection("\(documentsDirectory)/dbtest.sqlite3")
    } catch {
        print(error)
    }
}

现在我只是把它放在 @main 结构中。

@main
struct MyApp: App {
    ...
    createDB()
}

在 SwiftUI 世界中,您将如何创建一个我可以在整个会话(用户打开应用程序)中使用的全局数据库对象?或者在这里创建它可以吗?

有各种好的/坏的/丑陋的处理方法,在主结构中创建数据库可能被认为是一种不好的方法。

更好的方法是将所有 sqlite 代码包装在您自己的一个实现中。例如,检查 Wrapping the Database Connection section in this tutorial

同样本着不写“仅link”答案的精神,下面是同一部分的摘录

class SQLiteDatabase {
    private let dbPointer: OpaquePointer?
    private init(dbPointer: OpaquePointer?) {
        self.dbPointer = dbPointer
    }
    deinit {
      sqlite3_close(dbPointer)
    }
}