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)?

zacjordaan
la source
5
Vous pouvez également utiliser let uuid = NSUUID.UUID (). UUIDString
Yatheesha BL
Jetez un oeil à stackoverflow.com/questions/3773776/…
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)
Ahmed Al Hafoudh
la source
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.

James Frost
la source
18

Pour Swift 4 ;

let uuid = NSUUID().uuidString.lowercased()
Celil Bozkurt
la source
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.

Scott H
la source
8

Vous l' canutilisez également ci- lowercasedessous

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

Production

68b696d7-320b-4402-a412-d9cee10fc6a3

Je vous remercie !

SwiftDeveloper
la source
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)
iAleksandr
la source