Décoder une URL - Swift 2.0

Bonsoir à  tous,


 


J'ai un souci, il m'arrive d'avoir des URL avec un espace.


le problème c'est que si je fais ceci :



url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())

J'ai bien une url avec le %20 pour remplacer l'espace mais j'ai aussi le début de l'url de ce type http%3A//


 


Comment faire pour faire disparaitre le %3A (et avoir le ":") mais pas le %20 ?


Merci. 


Réponses

  • AliGatorAliGator Membre, Modérateur
    Il y a des explications très bien d'Apple sur le sujet, mais malheureusement très bien cachées et enfouies dans les Release Notes de Foundation : https://developer.apple.com/library/prerelease/mac/releasenotes/Foundation/RN-Foundation/#10_11URL

    Ils y expliquent pourquoi les anciennes méthodes avant iOS7 avaient des problèmes, et surtout comment mieux utiliser les nouvelles méthodes, et en particulier quelques rappels sur comment ça marche une NSURL.

    En bref, chaque partie d'une URL doit être encodée différemment d'après la RFC. La partie "http://" est indépendante, le host de l'URL doit être encodé d'une certaine manière, le path d'une manière différente, les paramètres encore d'une manière différente... parce que chaque partie de l'URL n'a pas les mêmes liste de caractères interdits d'après la RFC.

    Là  toi ce que tu essaies de faire c'est d'encoder la totalité de ton URL avec le URLPathAllowedCharacterSet. Note le "Path" dans le nom de ce CharacterSet, il est fait pour encoder que la partie "path" d'une NSURL, pas l'URL complète.

    Je pense qu'en lisant le paragraphe des Release Notes Apple que je t'ai citée tu y verras bien plus clair.
  • Oui impeccable, merci !


Connectez-vous ou Inscrivez-vous pour répondre.