1

我正在尝试实现示例中显示的代码。例如,当我将它放在应用程序委托中时:

import SQLite

let db = Database("path/to/db.sqlite3")

let users = db["users"]
let id = Expression<Int64>("id")
let name = Expression<String?>("name")
let email = Expression<String>("email")`

它似乎工作正常。但是当我去使用创建表代码时:

db.create(table: users) { t in
    t.column(id, primaryKey: true)
    t.column(name)
    t.column(email, unique: true)
}

它似乎不喜欢它。我的理解是建表代码需要进入一个方法。但它属于哪种方法呢?还是完全采用新方法?

对不起,如果这个问题看起来很简单。我是 Swift 和 SQLite 的新手。:-)

4

1 回答 1

1

顶部块没问题,因为您只是在分配延迟加载的全局变量。

底部块实际上正在执行代码,并且必须在函数内部进行。这是一个示例结构:

import SQLite

struct User {

    static let connection = Database()
    static let table = connection["users"]

    static let id = Expression<Int64>("id")
    static let name = Expression<String?>("name")
    static let email = Expression<String>("email")`

    static func createTable() {
        db.create(table: table) { t in
            t.column(id, primaryKey: true)
            t.column(name)
            t.column(email, unique: true)
        }
    }

}

在其他地方(在另一个函数中),您可以调用User.createTable()来创建表。

于 2015-08-08T19:16:54.753 回答