【发布时间】:2022-11-19 21:36:22
【问题描述】:
我想在我的应用程序 (Kotlin Multiplatform Mobile) iOS + Android 中包含一个 .json 文件,以便在首次启动时使用 .initialData{} 解析并保存到 Realm DB 中。
我使用 expect/actual 模式并尝试访问 /resources/initialdata.json 中的文件
我正在尝试使用 OKIO 库(应该准备好与 Kotlin Multiplatform 一起工作):https://square.github.io/okio/recipes/
我在从 src/commonMain/resources 访问文件时遇到问题得到的是未找到 IO 错误路径:
java.io.FileNotFoundException: src/resources/initialdata.json: open failed: ENOENT (No such file or directory)
带有 .initialData 的领域配置如下所示:
val config =
RealmConfiguration.Builder(schema = schema)
.name("boardDb-local")
.initialData{
val jsonString = FileResourceParser().parseInitialFile()
val list: List<Exercise> = Json.decodeFromString(jsonString)
val realmList: RealmList<Exercise> = realmListOf().also { it.addAll(list)}
for (item in realmList) {
copyToRealm(item, UpdatePolicy.ALL)
}
}
.log(LogLevel.ALL)
.schemaVersion(1)
.build()
//Class with method with platform specific logic to get a file from resources and parse it.
expect class FileResourceParser() {
fun parseInitialFile(): String
}
//and in androidMain Module logic to read the file using OKIO
actual class FileResourceParser {
val json = FileSystem.SYSTEM.read("src/resources/initialdata.json".toPath()) {
//Read UTF8 logic
}
//some other manipulation
return json
}
}
问题:谁来定义 commonMain 资源文件夹的路径。我很困惑。
谢谢!
【问题讨论】:
标签: kotlin io kotlin-multiplatform okio