在Kotlin多平台上生成UUID?

22

是否有任何Kotlin-Multiplatform通用函数来获取UUID / GUID?

 // ideally something like this
 val newUUID = UUID() // "1598044e-5259-11e9-8647-d663bd873d93"
 println("newUUID = $newUUID")

我希望不使用expect-actual制作独立的Android和iOS版本。


2
UUID.randomUUID() 在 iOS 上不起作用吗? - Paul Hicks
你确定 Kotlin 有 UUID 类型吗?我在寻找类似的东西,但是我根本没有看到这种类型。 - Dustin Pfannenstiel
UUID.randomUUID() 似乎是 Java 函数,不可在 MP 中使用:https://developer.android.com/reference/kotlin/java/util/UUID#randomuuid - treesAreEverywhere
2个回答

21
根据 Kotlin 多平台文档,你可以创建一个 `expect/actual` 函数来使用 Android(Java)和 iOS(NSUUID)的特定实现。
// Common
expect fun randomUUID(): String

// Android
import java.util.UUID

actual fun randomUUID() = UUID.randomUUID().toString()

// iOS
import platform.Foundation.NSUUID

actual fun randomUUID(): String = NSUUID().UUIDString()

10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接