0

我创建了期望/实际有趣的创建数据库,但出现错误:上下文尚未初始化如何解决?

我期待的乐趣:

expect fun createDB(): Server?

open class ServerRepository {
    private val database = createDB()
    private val serverQueries = database?.serverQueries

// Insert New Server
fun insert(title: String, url: String, token: String) {
    serverQueries?.insertServer(title, url, token)
}

// Get All Servers
fun list(): List<Servers> {
    return serverQueries?.selectAll()?.executeAsList()!!
}

// Get Server by ID
fun get(id: Long): Query<Servers>? {
    return serverQueries?.selectServer(id)
}

// Update Server
fun update(id: Long, title: String, url: String, token: String) {
    serverQueries?.updateServer(title, url, token, id)
}

// Delete Server
fun delete(id: Long) {
    serverQueries?.deleteServer(id)
}

}

实际的:

lateinit var context: Context

actual fun createDB() : Server? {
    val driver = AndroidSqliteDriver(Server.Schema, context, "Server.db")
    return Server(driver)
}

错误: kotlin.UninitializedPropertyAccessException:lateinit 属性上下文尚未初始化

4

1 回答 1

0

这是我发现实际/预期效果不佳的地方。实际/预期存在于您的共享代码模块中。而上下文对象(活动/应用程序)存在于您的平台代码模块(例如androidApp)中。

而不是使用实际/预期,在您的共享代码中使用一个接口更简单,该接口在您的平台中有一个实现(您可以访问上下文对象)。

于 2020-09-20T12:28:56.883 回答