В проекте есть несколько файлов SQLite3 с одинаковым форматом SQL, я открывал их по отдельности:
var db1: OpaquePointer? = nil
var db2: OpaquePointer? = nil
var db3: OpaquePointer? = nil
Интересно, можно ли поместить указатель в массив или словарь? чтобы сохранить работу кода, я попробовал это:
var planDBDict = [String:OpaquePointer]()
for fileName in planArr {
guard let dbPath = Bundle.main.path(forResource: fileName, ofType: "db") else {
continue
}
var db: OpaquePointer?
if sqlite3_open(dbPath, &db) == SQLITE_OK {
planDBDict[fileName] = db
} else {
debugPrint("Failed to open \(fileName) database")
}
}
И тогда чтение базы данных зависит от их имен:
let db = planDBDict[fileName]
if sqlite3_prepare_v2(db, sql, -1, &statement, nil) == SQLITE_OK {
// do get data ....
}
Они работали, но медленнее, чем когда-либо. Это плохая идея?