Instancier un type par une chaîne de caractères

En développent une application mobile, nous avons souvent besoin de communiquer avec un serveur distant pour envoyer ou récupérer des données et pour s’y faire, il faut initialiser une requête http par une instance de la structure URL, pour initialiser ce dernier il faut lui passer en paramètres une chaîne de caractère qui correspond à l’adresse distante que nous voulons interroger.
Voici un exemple qui interroge un serveur distant afin de récupérer une liste de produits :
Pour lancer une autre application ou un deep link à partir de notre application, nous devrons créer une URL avec le schème/deep link de l’application à ouvrir, voici un exemple :
Il existe plusieurs autres cas où nous aurions besoin d’utiliser des urls donc pour quoi ne pas faciliter la manière d’instancier la structure URL dans le but d’accélérer le développement. En Swift il existe un protocole: ExpressibleByStringLiteral qui permet de créer un type en lui assignant une chaîne de caractère entre double quotas.
Nous allons commencer par conformer la structure URL à ce protocole et implémenter ces méthodes obligatoires. Voici l’implémentation en Swift 4 :
En Swift 3 et inférieur nous devrons implémenter deux méthodes supplémentaires :
Pour créer une URL, il suffit de faire comme ça :
Vous devrez préciser explicitement le type URL de la variable/constante pour que le compilateur reconnait la structure URL et puis utiliser l’implémentation du protocole.
Nous pouvons faire conformer ce protocole à n’importe quel type, dans l’exemple ci-dessus nous avons créé une instance de la structure User en lui assignant une chaine de caractère, comme vous le voyez dans la capture d’écran, le contenu de l’attribut firstName est la chaine de caractère que nous venons d’assigner à l’instance.

Conclusion
Il existe d’autres protocoles de la même famille commençant par le mot clé ‘ExpressibleBy’, ces protocoles nous permettent de créer rapidement des instances mais par contre je pense qu’ils rendent le code moins lisible et pas facilement compréhensible c’est pour cela qu’il faut les utiliser avec modération.
