Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot find String.format in Kotlin Multiplatform shared module

I find this weird. I am trying to use String.format in my shared module code in a Kotlin Multiplatform setup. It cannot find the format function and does not autocomplete in Android Studio. But it is working fine in the androidMain module.

like image 851
iori24 Avatar asked Oct 25 '25 02:10

iori24


2 Answers

IIRC, format needs platform localization info. KMP does not directly support localization. That function is available for the JVM (or Android) code. You'll need to do some kind of expect/actual, or find some kind of library that does this, although I don't know of any off-hand.

like image 88
Kevin Galligan Avatar answered Oct 26 '25 21:10

Kevin Galligan


You can use NSString.stringWithFormat for Ios. Example:

Common:


expect fun formatTime(seconds: Long): String

Android:


actual fun formatTime(seconds: Long): String {
    val minutes = java.util.concurrent.TimeUnit.SECONDS.toMinutes(seconds)
    val remainingSeconds = seconds % 60
    return String.format("%02d:%02d", minutes, remainingSeconds)
}

Ios:


import platform.Foundation.NSString
import platform.Foundation.stringWithFormat

actual fun formatTime(seconds: Long): String {
    val minutes = seconds / 60
    val remainingSeconds = seconds % 60
    return NSString.stringWithFormat("%02d:%02d", minutes, remainingSeconds)
}
like image 39
murat_yuksektepe Avatar answered Oct 26 '25 21:10

murat_yuksektepe



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!