Qu'est-ce qu'un UUID et pourquoi en a-t-on besoin dans une application iOS ?
\n\nImaginez 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\nSur 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\nDans 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\nLes bases : comment générer un UUID en Swift en une seule ligne
\n\nLa 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.
Exemple de base
\n\nimport Foundation\n\nlet myUUID = UUID()\nprint(myUUID.uuidString)\n// Sortie : "E621E1F8-C36C-495A-93FC-0C247A3E6E5F"\n\nVoilà ! 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.
Qu'y a-t-il à l'intérieur d'un UUID ?
\n\nL'objet UUID en Swift stocke une valeur de 128 bits. Vous pouvez l'obtenir sous forme brute :
let uuid = UUID()\nlet uuidBytes = uuid.uuid // (UInt8, UInt8, ..., UInt8) — un tuple de 16 octets\nprint(uuidBytes.0) // Premier octet\n\nMais en pratique, on travaille le plus souvent avec la représentation sous forme de chaîne.
\n\nUUID à partir d'une chaîne : l'opération inverse
\n\nParfois, 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 :
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\nNotez 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.
Comparaison d'UUID : comment vérifier l'identité
\n\nSwift implémente le protocole Equatable pour UUID, vous pouvez donc les comparer directement :
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\nC'est pratique pour rechercher des doublons ou vérifier la présence d'un identifiant dans une collection.
\n\nUUID comme clé dans les dictionnaires et les ensembles
\n\nLa 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 :
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\nC'est un excellent moyen d'organiser les données si vous avez besoin de clés garanties uniques.
\n\nQuelles sont les différentes versions d'UUID ? (Et pourquoi cela vous concerne)
\n\nLa 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