類型安全API允許您聲明從語句中拉出時不包裝的非可選類型的表達式。
自述:
let users = Table("users")
let id = Expression<Int64>("id")
let name = Expression<String?>("name")
let email = Expression<String>("email")
try db.run(users.create { t in
t.column(id, primaryKey: true)
t.column(name)
t.column(email, unique: true)
})
// CREATE TABLE "users" (
// "id" INTEGER PRIMARY KEY NOT NULL,
// "name" TEXT,
// "email" TEXT NOT NULL UNIQUE
//)
let insert = users.insert(name <- "Alice", email <- "[email protected]")
let rowid = try db.run(insert)
// INSERT INTO "users" ("name", "email") VALUES ('Alice', '[email protected]')
for user in db.prepare(users) {
println("id: \(user[id]), name: \(user[name]), email: \(user[email])")
// id: 1, name: Optional("Alice"), email: [email protected]
}
注意兩個id
和email
,這是不可選的,因此也返回。
對不起,這不能真正回答我的問題。我真的不想要類型安全的,我希望能夠直接插入我的SQL。我很好,所有的答案輸出爲字符串,這是SQLite的默認值。 – Mark80
@ Mark80由於SQLite值是在運行時動態返回的,因此非類型安全版本無法知道值的數組將會是什麼,除了可選。但是,您可以使用Swift的多種可選解包技術來處理這個問題! – stephencelis