Это правильный способ поместить OpaquePointer в массив в SQLite3? - PullRequest
0 голосов
/ 06 февраля 2020

В проекте есть несколько файлов 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 ....
}

Они работали, но медленнее, чем когда-либо. Это плохая идея?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...