小编Bri*_*ian的帖子

从Swift访问Kotlin标准库

在我的Kotlin Multiplatform项目中,我正在尝试访问kotlin-stdlibSwift中定义的Kotlin类型.

TL; DR:StdLib类型/方法似乎没有导致头定义,我想要一个不涉及编写大量样板代码的解决方案

我的情景

我在Kotlin中定义了一个接口......

interface MyKotlinInterface {
  fun run() : Sequence<String>
}
Run Code Online (Sandbox Code Playgroud)

...并在Swift中实现了这个接口......

class MySwiftClass : MyKotlinInterface {
  func run() -> KotlinSequence {
    // return sequenceOf("foo")
  }
}
Run Code Online (Sandbox Code Playgroud)

...我正在尝试创建一个Sequence但是没有来自kotlin.sequences可用包的方法(例如generateSequence).

实际上是否可以访问我在代码中定义的Kotlin框架类型或方法 - 如果是,如何?此外,如何在不编写样板代码的情况下实现这一目标?

更多详情

看一下生成的Objective-C头文件,我看到了我的类(显然)和基本Kotlin类型的定义.遗漏的基本上是标准库功能的一切(我关心所有Sequence相关的东西).

build.gradle.kts看起来像:

plugins {
  kotlin("multiplatform") version "1.3.0"
}

kotlin {
    targets { /* ... */ }

    sourceSets {

        getByName("commonMain") {
            dependencies {
                api("org.jetbrains.kotlin:kotlin-stdlib-common")
            }
        }

        // ...

        getByName("iosMain") {
            dependencies {
                api("org.jetbrains.kotlin:kotlin-stdlib") …
Run Code Online (Sandbox Code Playgroud)

android ios kotlin swift kotlin-multiplatform

5
推荐指数
1
解决办法
184
查看次数

标签 统计

android ×1

ios ×1

kotlin ×1

kotlin-multiplatform ×1

swift ×1