URL dans Swift: des scénarios communs expliqués en profondeur – Meilleure programmation

Online Coding Courses for Kids

let twitterAvatarURL = URL(string: "https://twitter.com/twannl/photo.png?width=200&height=200")!
print(twitterAvatarURL.path) // Prints: /twannl/photo.png
print(twitterAvatarURL.pathComponents) // Prints: ["/", "twannl", "photo.png"]
print(twitterAvatarURL.pathExtension) // Prints: png
print(twitterAvatarURL.lastPathComponent) // Prints: photo.png

Ces propriétés sont idéales dans de nombreux cas, comme l’obtention du nom de fichier ou de l’extension, mais elles ne nous fournissent pas les éléments de requête. C’est ici que URLComponents entrer dans leur propre.

Obtenez la valeur des paramètres de requête

Nous pouvons le faire en utilisant un URLComponents instance initialisée avec le lien, qui nous donne accès à une nouvelle collection de propriétés. Vous pouvez le voir essentiellement comme un analyseur d’URL qui nous donne accès, par exemple, aux éléments de requête:

let components = URLComponents(string: "https://twitter.com/twannl/photo.png?width=200&height=200")!
print(components.query!) // width=200&height=200
print(components.queryItems!) // [width=200, height=200]

Notez que la structure URLComponents analyse et construit des URL selon RFC 3986. Son comportement diffère subtilement de celui de la structure URL, qui est conforme aux RFC plus anciens. Cependant, vous pouvez facilement obtenir une valeur d’URL basée sur le contenu d’une valeur URLComponents ou vice versa.

Cela nous permet d’accéder directement aux valeurs en parcourant le tableau des éléments de requête:

Cependant, ce n’est pas encore le plus beau morceau de code. Nous utilisons beaucoup de déballages et ce n’est pas vraiment lisible. Nous pouvons utiliser un indice personnalisé qui nous permet de rendre ce code beaucoup plus agréable:

Nouveau sur les abonnements personnalisés? Consultez mon article de blog Des indices personnalisés dans Swift expliqués avec des exemples de code.

Oui, il y a encore beaucoup de déballages – je vous laisse le soin de rendre cela plus agréable en utilisant des gardes pour le déballage – mais au moins nous pouvons accéder plus facilement aux éléments de la requête.


Close Menu