A documentação da Apple e muitos artigos sugerem que você pode converter uma substring (string.subsequence) em uma string apenas chamando String(substring)
e de fato isso funciona.
let str = "Hello world"
let hello = str.prefix(5) //create substr
//CREATE STRING FROM SUBSTRING
let hellostr = String(hello) //works
No entanto, quando a substring é opcional, como a seguir,
let str = Optional("Hello world")
let hello = str?.prefix(5) //create substr
//CREATE STRING FROM OPTIONAL SUBSTRING
let hellostr = String(hello) //gives error
Estou recebendo o erro
"No exact matches in call to initializer "
O que poderia estar causando esse erro?
Obrigado por qualquer sugestão.
Você precisa desembrulhar o Opcional,
Substring
pois não pode criar diretamente umString
a partir de um OpcionalSubstring
.Você precisa decidir como deseja lidar com
nil
os valoreshello
e, com base nisso, escolher a opção apropriada.Aqui estão algumas opções:
Use
Optional.map
para criar um não opcionalString
a partir deSubstring
caso o opcional tenha um valor diferente de nulo e se o opcional fornil
, atribuanil
ao resultado/Se você sempre quiser
hellostr
ter um valor, precisará fornecer um valor padrão para o valor de retorno deOptional.map
ou (como Martin R apontou nos comentários) para o
Optional<Substring>
passado paraString.init
:Você também pode usar a ligação opcional para substituir
Optional.map
por uma sintaxe mais detalhada