2017-10-16 9 views
0

Je sais que je pouvais UrlEncode cela, mais comment pourrais-je accomplir ceci:Comment puis-je échapper à un symbole% à Swift Chaîne

let strReturn = String(strToConvert.characters.map { 
      $0 == " " ? "%20" : $0 
     }) 

quand je fais ce que je reçois « valeurs de résultat dans « : » expression ont types de désadaptation String 'et « caractère » »

même si j'ajoute « %% 20 »

+1

Avant d'aller trop profondément dans ce sens, qu'est-ce que vous voulez accomplir? Escape une chaîne pour en faire une URL valide? –

+0

oui, c'est plus un exercice pour moi que toute autre chose. – PruitIgoe

Répondre

1

Il est OK si vous ne faites que cela pour un exercice. Pour le code de production, les meilleures méthodes pour échapper une chaîne d'URL sont dans la structure URLComponents.

maintenant sur votre question ... le problème est le type de retour de votre fermeture: "%20" est un String, $0 est un Character. Swift ne sait pas comment déduire le type.

Modifier à ceci:

let strReturn = strToConvert.characters.map { 
    $0 == " " ? "%20" : String($0) 
}.joined(separator: "") 
+0

Ah, merci, je me suis rapproché, je ne suis pas arrivé à la partie jointe. Juste pour être clair, sera joint (séparateur: "") toujours produire une chaîne? – PruitIgoe

+1

Oui, voici [la documentation] (https://developer.apple.com/documentation/swift/array/1688227-joined) –

+0

en passant une chaîne vide car le séparateur est redondant. Utilisez simplement '.joined()' –