【发布时间】:2021-11-25 02:06:51
【问题描述】:
如何从 Kotlin 模块中正确读取 Swift 中可变数组的数据? Kotlin 共享模块:
data class Tape(private val capacity: Int) {
val reel: MutableList<Char>
...
}
斯威夫特:
tape.reel.compactMap({ $0 as? Character } // leads to nothing in the array
【问题讨论】:
-
Char在 Kotlin 中是一个“16 位 Unicode 字符”,所以严格来说 Swift 中的等价物是UInt16,但你甚至可以从Int开始。 -
这行不通,因为
Character是一个 swift 结构,所以 kotlin native 无法生成它。您可以使用type(of: $0)检查变量的类型:在我的情况下,我得到了一些Shared_kobjcc0。这显然不是我所期望的:它必须是NSNumber的某个子类,因为您不能将常规的Int放在NSArray中。我建议您在 JetBrains 问题跟踪器上create a problem。 -
现在您可以将其存储为整数
-
@PhilipDukhov,是的,我认为这将是我现在的工作。感谢您的帮助
标签: swift kotlin nsmutablearray kotlin-multiplatform kmm