为什么这行代码在 Xcode Playground 中有效,但在实际的 Xcode 项目中却无效?
let first = string.split(separator: "").sorted().joined()
Error: Cannot convert value of type 'String' to expected argument type 'String.Element' (aka 'Character')
我想将字符串转换为字符数组,
split(separator: "")
解决了问题,但由于某种原因代码只能在我的操场上工作。
项目和playground中的swift版本都是5.7。
我不知道为什么你会看到游乐场和常规代码之间的这种差异,但有一个解决方法可以完全回避它。
当您写下
string.split(separator: "")
时,您会得到 Array<Character>
。您只需使用 Array(string)
即可更直接地完成此操作。
事实证明,您“实际上”并不需要字符数组。您只需要一些可以调用 sorted()
的东西,例如
Array(string).sorted()
。你很幸运,因为 String
已经是 Collection<Character>
(这就是数组初始值设定项首先起作用的原因),并且所有 Comparable
值的集合都是可排序的。所以你所需要的只是string.sorted()
然后,您对结果使用 .joined()
,将
Array<Character>
转换回 String
。如果您不需要字符之间的分隔符,更直接的方法就是使用 String
初始化器。所以真的,您所需要的只是:
let result = String(string.sorted())