Générer un UUID en iOS avec Swift : guide complet pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce qu'un UUID et pourquoi en a-t-on besoin dans une application iOS ?

\n\n

Imaginez que vous créez une application de notes. Chaque note a besoin d'un « passeport » unique pour se distinguer des autres. Ce passeport dans le monde de la programmation est l'UUID (Universally Unique Identifier) — un identifiant universel unique. Dans le développement iOS avec Swift, la génération d'UUID est une tâche basique mais cruciale que tout développeur rencontre tôt ou tard.

\n\n

Sur Stack Overflow, la question « Generate a UUID on iOS from Swift » a recueilli des milliers de vues. Pourquoi ? Parce que même les programmeurs expérimentés se trompent parfois : quelle classe utiliser ? Faut-il importer des bibliothèques supplémentaires ? Quel UUID est considéré comme « correct » ?

\n\n

Dans cet article, nous allons tout expliquer depuis le début. Vous apprendrez à générer un UUID sur iOS avec Swift, comprendrez la différence entre les versions d'UUID et saurez les appliquer en pratique. C'est parti !

\n\n

Les bases : comment générer un UUID en Swift en une seule ligne

\n\n

La façon la plus simple d'obtenir un UUID sur iOS est d'utiliser la classe intégrée UUID du framework Foundation. Elle est disponible « prête à l'emploi » et ne nécessite aucune importation supplémentaire.

\n\n

Exemple de base

\n\n
import Foundation\n\nlet myUUID = UUID()\nprint(myUUID.uuidString)\n// Sortie : "E621E1F8-C36C-495A-93FC-0C247A3E6E5F"
\n\n

Voilà ! Vous venez de générer un UUID version 4 — un identifiant aléatoire qui a une probabilité extrêmement élevée d'être unique dans tout l'univers. Notez la propriété uuidString : elle retourne une chaîne au format standard XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.

\n\n

Qu'y a-t-il à l'intérieur d'un UUID ?

\n\n

L'objet UUID en Swift stocke une valeur de 128 bits. Vous pouvez l'obtenir sous forme brute :

\n\n
let uuid = UUID()\nlet uuidBytes = uuid.uuid // (UInt8, UInt8, ..., UInt8) — un tuple de 16 octets\nprint(uuidBytes.0) // Premier octet
\n\n

Mais en pratique, on travaille le plus souvent avec la représentation sous forme de chaîne.

\n\n

UUID à partir d'une chaîne : l'opération inverse

\n\n

Parfois, vous avez déjà une chaîne UUID (par exemple, depuis une base de données ou une API) et vous devez créer un objet UUID pour travailler avec. Swift le permet via un initialiseur :

\n\n
let uuidString = "550e8400-e29b-41d4-a716-446655440000"\nif let uuid = UUID(uuidString: uuidString) {\n    print("UUID créé avec succès : \\(uuid)")\n} else {\n    print("Format UUID invalide")\n}
\n\n

Notez que l'initialiseur retourne une valeur optionnelle. Si la chaîne ne correspond pas au format UUID, vous obtiendrez nil. Cela protège votre code contre les données incorrectes.

\n\n

Comparaison d'UUID : comment vérifier l'identité

\n\n

Swift implémente le protocole Equatable pour UUID, vous pouvez donc les comparer directement :

\n\n
let uuid1 = UUID()\nlet uuid2 = UUID()\nlet uuid3 = uuid1\n\nprint(uuid1 == uuid2) // false (UUID différents)\nprint(uuid1 == uuid3) // true (même objet)
\n\n

C'est pratique pour rechercher des doublons ou vérifier la présence d'un identifiant dans une collection.

\n\n

UUID comme clé dans les dictionnaires et les ensembles

\n\n

La classe UUID implémente également le protocole Hashable, ce qui permet de l'utiliser comme clé dans les dictionnaires et comme élément d'un ensemble :

\n\n
var userSessions: [UUID: String] = [:]\nlet sessionId = UUID()\nuserSessions[sessionId] = "Session utilisateur active"\n\nlet allIds: Set<UUID> = [UUID(), UUID(), UUID()]\nprint(allIds.count) // 3
\n\n

C'est un excellent moyen d'organiser les données si vous avez besoin de clés garanties uniques.

\n\n

Quelles sont les différentes versions d'UUID ? (Et pourquoi cela vous concerne)

\n\n

La norme UUID définit plusieurs versions. Sur iOS avec Swift, par défaut, un UUID version 4 (aléatoire) est généré. Mais qu'en est-il des autres versions ?

\n\n
    \n
  • UUID v1 — basé sur le temps

Blogs

Book Recommendations