ios - 无法将 iOS 中常见的 Kotlin 扩展函数用作 Swift 扩展

标签 ios swift kotlin extension-methods kotlin-multiplatform

我有一个 Kotlin 多平台项目设置,其中包含适用于 iOS 的 Android 和 cocoapods。

我在 commonMain/src 中有一个文件 Extensions.kt,具有以下功能:

fun String.isValidEmail(): Boolean {
    return validate(ValidatorRegex.EMAIL)
}

我可以在 Android 中以 String 扩展的形式访问此函数:

"abcd@gmail.com".isValidEmail()

但是在使用 Swift 的 iOS 中,我需要将其作为另一个类的静态方法来调用:

ExtensionsKt.isValidEmail("abcd@gmail.com")

它应该将该 commonMain/src 方法转换为 String 的 Swift 扩展,而不是具有静态方法的类。

我是否缺少任何配置?

最佳答案

你在这里做所有的事情。不幸的是,这个选项目前不可用。对于某些类,扩展转换可能可以正确执行,但 Swift 的 String 不是这样。这是一个已知的不便,K/N 团队正在努力改善它。

关于ios - 无法将 iOS 中常见的 Kotlin 扩展函数用作 Swift 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60050795/

相关文章:

swift - viewDidLoad 中的异步任务

android - 可在多个 MPP 中重用的 Kotlin 公共(public)库

android - Lint 错误 : Suspicious equality check: equals() is not implemented in Object DiffUtilEquals

ios - 实现碰撞检测

java - 如何同时调用所有 `Mono<E>`

ios - Swift:实例成员不能用于 ARKitVision 示例中的类型

javascript - Safari/webapp 启动 native 应用程序 iOS

ios - Realm 模型中的单一反向关系

ios - 无法删除 uicollectionviewcell 底部的间距?

ios - 创建一个圆形的 TableViewCell 指示器,就像 Apple Mail 应用程序一样