结果值以'? :'表达式的类型'String.SubSequence'(又名'Substring')和'String'不匹配

时间:2019-08-16 05:51:28

标签: swift variables character

我正在使用

var chars = Array(string.hasPrefix("#") ? string.characters.dropFirst() : string.characters)

收到此错误

  

“'?:'表达式中的结果值具有不匹配的类型'String.SubSequence'(又名'Substring')和'String'”“

如何解决?

2 个答案:

答案 0 :(得分:0)

dropFirst()从您的字符串中返回一个Substring,并且编译器抱怨您返回的是Substring类型,如果为true,则返回String类型,否则为p

只需将Substring转换为StringString(yourSubString),它应该可以工作

var chars = Array(string.hasPrefix("#") ? String(string.characters.dropFirst()) : string.characters)

答案 1 :(得分:0)

三元?:运算符的第二和第三操作数必须具有相同的类型。 dropFirst返回Substring,而charactersString,从而导致错误。

要注意的另一件事是,自Swift 4起,您不需要.characters

您的整个表达式可以重新排列为:

var chars = string.hasPrefix("#") ? Array(string.dropFirst()) : Array(string)

这样,最后两个操作数都属于[Character]类型,从而消除了错误。