假设我有一个带有波兰语发音符号的名字列表:
listOf("Zosia", "Łucja", "Asia")
我想排序它,并获得如下结果:
[Asia, Łucja, Zosia]
我可以在Kotlin中使用Collator执行它,如下所示:
listOf.sortedWith { s1, s2 ->
Collator.getInstance(Locale("pl", "PL")).compare(s1, s2)
}
不幸的是,我无法在commonMain模块中使用上面的代码,因为Collator
和Locale
类在那里无法访问,所以我决定创建期望/实际函数,但我不知道如何在iOS版本中实现它。
在斯威夫特,我可以这样写道:
listOf.sorted { $0.localizedCompare($1) == .orderedAscending }
但这对iosMain模块中的Kotlin实现没有帮助。
那么,如何在KMM中使用iOS的Collator对列表进行排序呢?
1条答案
按热度按时间zf9nrax11#
在你的
iosMain
中你可以使用localizedCompare
,它是NSString
类的方法,你只需要从platform.Foundation
导入它你会收到编译器警告,因为强制转换到
NSString
时,它会告诉你这个强制转换永远不会成功。但是没关系,这是Kotlin文档中推荐的方法。您可以使用
@Suppress("CAST_NEVER_SUCCEEDS")
抑制它