我正在尝试将我的几个应用程序转换为使用GRDB.swift。有没有人有或者知道我可以在哪里找到一个文件来帮助我入门?我已经阅读了大部分的GRDB文档,但是我不能理解。下面是一个示例场景。
这是我从SQLite.sift转换而来的
class Database
{
static let shared = Database()
public let databaseConnection: DatabaseQueue?
private init()
{
do
{
let fileUrl = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("MyDaatbase.sqlite")
// GRDB
let databaseConnection = try DatabaseQueue(path: fileUrl.path)
self.databaseConnection = databaseConnection
} catch {
databaseConnection = nil
let nserror = error as NSError
print("Cannot connect to Database. Error is: \(nserror), \(nserror.userInfo)")
}
}
}有没有人可以把这个转换成GRDB来帮我入门?
static func isAnimation() -> Bool
{
let theTable = Table("Settings")
let theColumn = Expression<String>("AnimateNav")
var theStatus = false
do {
for theAnswer in try Database.shared.databaseConnection!.prepare(theTable.select(theColumn)) {
//print(theAnswer[theColumn])
let theStatusText = (theAnswer[theColumn])
theStatus = theStatusText == "true" ? true : false
}
} catch {
print("Getting the isAnimation Status failed! Error: \(error)")
}
return theStatus
}发布于 2021-01-04 23:47:12
您可以使用原始SQL:
static func isAnimation() -> Bool {
var theStatus = false
do {
let animateNav = try Database.shared.databaseConnection!.read { db in
String.fetchOne(db, sql: "SELECT AnimateNav FROM Settings")
}
theStatus = animateNav == "true" ? true : false
} catch {
print("Getting the isAnimation Status failed! Error: \(error)")
}
return theStatus
}您还可以为Settings表定义一个Record type,这是GRDB的首选方式:
// Settings.swift
struct Settings: Codable, FetchableRecord, TableRecord {
var animateNav: String
// other properties for other columns in the Settings table
...
}
// Your file
static func isAnimation() -> Bool {
var theStatus = false
do {
let settings = try Database.shared.databaseConnection!.read { db in
try Settings.fetchOne(db)
}
theStatus = settings?.animateNav == "true" ? true : false
} catch {
print("Getting the isAnimation Status failed! Error: \(error)")
}
return theStatus
}https://stackoverflow.com/questions/65545884
复制相似问题