使用SQLDelight在iOS端的KMM中预填充数据库

ttisahbt  于 2023-06-07  发布在  iOS
关注(0)|答案(1)|浏览(177)

我想在我的KMM项目中预先填充数据库。我使用SQLDelight。我在Android端有这个实现。

actual fun Scope.createDriver(): SqlDriver {

    val context = androidContext()
    val fileName = "dbFileName"
    val database: File = context.getDatabasePath(fileName)

    if (!database.exists()) {
        val inputStream = context.assets.open(fileName)
        val outputStream = FileOutputStream(database.absolutePath)

        inputStream.use { input ->
            outputStream.use {
                input.copyTo(it)
            }
        }
    }

    return AndroidSqliteDriver(NoteDatabase.Schema, context, fileName)
}

我在iOS上试过这个代码,但它不工作。

val path = "test.db"
val fileManager = NSFileManager.defaultManager

if (!fileManager.fileExistsAtPath(path)) {
    val bundlePath = MR.assets.balagh_ul_quran.url.path.toString()
    fileManager.copyItemAtPath(bundlePath, toPath = path, error = null)

}

return NativeSqliteDriver(NoteDatabase.Schema, path)

谁能给点建议吗?
谢谢!

b1uwtaje

b1uwtaje1#

val path = "test.db"
val dbFile = File(DatabaseFileContext.databasePath(path, null))

DatabaseFileContext是一个sqliter类,仅供参考。

相关问题