Générer un UUID sur iOS à partir de Swift


296

Dans mon application iOS Swift, je veux générer des chaînes UUID ( GUID ) aléatoires à utiliser comme clé de table, et cet extrait semble fonctionner:

let uuid = CFUUIDCreateString(nil, CFUUIDCreate(nil))

Est-ce sûr?

Ou existe-t-il peut-être une meilleure approche (recommandée)?


5
Vous pouvez également utiliser let uuid = NSUUID.UUID (). UUIDString
Yatheesha BL


1
Au lieu de votre modification, veuillez accepter l'une des réponses. Puisque vous le faites comme l'a proposé @AhemdAlHafoudh, je vous suggère d'accepter sa réponse.
DarkDust

Ah, j'ai compris. Merci ... c'est fait.
zacjordaan

Réponses:


627

Essaye celui-là:

let uuid = NSUUID().uuidString
print(uuid)

Swift 3/4/5

let uuid = UUID().uuidString
print(uuid)

6
Dans XCode 6.1, j'ai trouvé cette erreur: 'UUID ()' n'est pas utilisable: utilisez la construction d'objet 'NSUUID ()'. Nous devrions le changer en NSUUID (). UUIDString
ohyes

La suggestion ci-dessus n'est pas différente de l'appel NSUUID.init().UUIDString, non?
Kyle Redfearn

4
À partir de Xcode 8 (bêta), iOS 10 et Swift 3, cela a été renomméUUID().uuidString
califrench

Voulez-vous ajouter ceci à la réponse?
Ahmed Al Hafoudh

1
Salut, j'ai utilisé cette méthode UUID (). UuidString mais il semble renvoyer une chaîne différente chaque fois que je l'utilise, je veux que ce soit 1 valeur uniquement pour l'application que j'installe. Un aperçu?
Nerezza

28

Vous pouvez également simplement utiliser l' API NSUUID :

let uuid = NSUUID()

Si vous souhaitez récupérer la valeur de chaîne, vous pouvez utiliser uuid.UUIDString.

Notez que NSUUIDc'est disponible à partir d'iOS 6 et plus.


18

Pour Swift 4 ;

let uuid = NSUUID().uuidString.lowercased()

3
Ici, je ne sais pas pourquoi l'UUID en minuscules est préférable à un UUID ordinaire.
Alex Kornhauser

13

Pour Swift 3, de nombreux Foundationtypes ont supprimé le préfixe «NS», vous pouvez donc y accéder par UUID().uuidString.


8

Vous l' canutilisez également ci- lowercasedessous

let uuid = NSUUID().UUIDString.lowercaseString
print(uuid)

Production

68b696d7-320b-4402-a412-d9cee10fc6a3

Je vous remercie !


1
Merci. c'est maintenantNSUUID().uuidString.lowercased()
Patrick Dura

4
Quel est l'avantage d'utiliser des minuscules comme celui-ci?
Luke Stanyer

Peut-être est-ce plus agréable à regarder que majuscule?
tgunr

5

Chaque fois, le même sera généré:

if let uuid = UIDevice.current.identifierForVendor?.uuidString {
    print(uuid)
}

Chaque fois qu'un nouveau sera généré:

let uuid = UUID().uuidString
print(uuid)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.