3

我正在尝试读取JSON保存在本地项目中的文件,并希望使用 获取和读取Kotlin Multiplatform Mobile,因此我可以与 Android 和 iOS 共享

按照我正在做的事情:

共同点:

package com.example.readJSON.shared

import kotlinx.serialization.Serializable

@Serializable
data class DataRequest(
    val dataRegimenRequest: List<DataRegimenRequest>?
)

expect class FileResource(location: String){
    val json: String?
}

在 androidMain 中:

package com.example.readJSON.shared

actual class FileResource actual constructor(location: String) {
    actual val json: String? = this::class.java.classLoader!!.getResource(location)?.readText()
}

在 iosMain 中:

package com.example.readJSON.shared

actual class FileResource actual constructor(location: String) {
    actual val json: String? = null //TODO: write a code to read from local file
}

有人可以帮助我,我怎样才能获取我JSON的 iOS 本地文件?

对于 Android,我可以读取本地JSON文件。

4

1 回答 1

2

您可能需要编写一些 gradle 来将文件复制到您的 iOS 应用程序源,然后通过从 Bundle 中读取 iOS 资源文件来加载它。这有点难以理解,但我们在这里推入一个 Swift 函数来处理它。您也可以在 iOS Kotlin 中编写该代码。

可能可以直接将文件添加到 Xcode,而无需在 Gradle 中复制它。在 Xcode 中,右键单击您的源文件夹并选择“将文件添加到 ___”,然后将其指向该文件。如果您的所有源代码都在一个存储库中,您应该能够使用 Xcode 的相对路径指向该文件,并在运行时加载它。

对于 Android,您可能希望将该文件放入assets而不是使用类加载器加载它,但这是一个不同的讨论。

于 2020-12-17T14:57:54.547 回答