Genera un UUID su iOS da Swift


296

Nella mia app iOS Swift voglio generare stringhe UUID ( GUID ) casuali da utilizzare come chiave di tabella e questo snippet sembra funzionare:

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

È sicuro?

O esiste forse un approccio migliore (consigliato)?


5
Puoi anche usare let uuid = NSUUID.UUID (). UUIDString
Yatheesha BL,


1
Invece della tua modifica, accetta una delle risposte. Dal momento che lo stai facendo come proposto da @AhemdAlHafoudh, ti suggerisco di accettare la sua risposta.
DarkDust,

Ah, capito. Grazie ... fatto.
Zacjordaan,

Risposte:


627

Prova questo:

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

Swift 3/4/5

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

6
In XCode 6.1, ho trovato questo errore: 'UUID ()' non è disponibile: usa la costruzione dell'oggetto 'NSUUID ()'. Dovremmo cambiarlo in NSUUID (). UUIDString
ohyes

Il suggerimento sopra non è diverso dalla chiamata NSUUID.init().UUIDString, giusto?
Kyle Redfearn,

4
A partire da Xcode 8 (beta), iOS 10 e Swift 3, questo è stato rinominato inUUID().uuidString
califrench il

Ti dispiace aggiungere questo alla risposta?
Ahmed Al Hafoudh,

1
Ciao ho usato questo metodo UUID (). UuidString ma sembra restituire una stringa diversa ogni volta che lo uso, voglio che sia 1 valore solo per l'app che installo. Qualche idea?
nerezza,

28

Puoi anche semplicemente usare l' API NSUUID :

let uuid = NSUUID()

Se si desidera ripristinare il valore della stringa, è possibile utilizzare uuid.UUIDString.

Nota che NSUUIDè disponibile da iOS 6 e versioni successive.


18

Per Swift 4 ;

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

3
Cimitero nitpick qui, ma non so perché l'UUID minuscolo sia preferibile a un UUID normale.
Alex Kornhauser,

13

Per Swift 3, molti Foundationtipi hanno abbandonato il prefisso "NS", quindi puoi accedervi UUID().uuidString.


8

Inoltre lo canusi lowercasesotto

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

Produzione

68b696d7-320b-4402-A412-d9cee10fc6a3

Grazie !


1
Grazie. è oraNSUUID().uuidString.lowercased()
Patrick Dura il

4
Qual è il vantaggio di usare lettere minuscole come questa?
Luke Stanyer,

Forse è più piacevole alla vista che maiuscolo?
tgunr,

5

Ogni volta lo stesso verrà generato:

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

Ogni volta che ne verrà generato uno nuovo:

let uuid = UUID().uuidString
print(uuid)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.