Generar un UUID en iOS desde Swift

296

En mi aplicación iOS Swift, deseo generar cadenas aleatorias de UUID ( GUID ) para usar como clave de tabla, y este fragmento parece funcionar:

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

¿Es esto seguro?

¿O tal vez hay un mejor enfoque (recomendado)?

zacjordaan
fuente
55
También puede usar let uuid = NSUUID.UUID (). UUIDString
Yatheesha BL
Eche un vistazo a stackoverflow.com/questions/3773776/…
Yatheesha BL
1
En lugar de su edición, acepte una de las respuestas. Como lo está haciendo de la manera que @AhemdAlHafoudh propuso, le sugiero que acepte su respuesta.
DarkDust
Ah, lo tengo. Gracias ... hecho.
zacjordaan

Respuestas:

627

Prueba este:

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

Swift 3/4/5

let uuid = UUID().uuidString
print(uuid)
Ahmed Al Hafoudh
fuente
66
En XCode 6.1, encontré este error: 'UUID ()' no está disponible: use la construcción de objetos 'NSUUID ()'. Deberíamos cambiarlo a NSUUID (). UUIDString
ohyes
La sugerencia anterior no es diferente a llamar NSUUID.init().UUIDString, ¿verdad?
Kyle Redfearn
44
A partir de Xcode 8 (beta), iOS 10 y Swift 3, se ha cambiado el nombre aUUID().uuidString
califrench el
¿Le importaría agregar esto a la respuesta?
Ahmed Al Hafoudh
1
Hola, utilicé este método UUID (). UuidString pero parece devolver una cadena diferente cada vez que lo uso, quiero que sea 1 valor solo para la aplicación que instalo. Alguna idea?
nerezza
28

También podría usar la API NSUUID :

let uuid = NSUUID()

Si desea recuperar el valor de la cadena, puede usar uuid.UUIDString .

Tenga en cuenta que NSUUIDestá disponible desde iOS 6 en adelante.

James Frost
fuente
18

Para Swift 4 ;

let uuid = NSUUID().uuidString.lowercased()
Celil Bozkurt
fuente
3
Cementerio aquí, pero no sé por qué el UUID en minúsculas es preferible a un UUID normal.
Alex Kornhauser el
13

Para Swift 3, muchos Foundationtipos han eliminado el prefijo 'NS', por lo que accedería a él UUID().uuidString.

Scott H
fuente
8

También lo canusas lowercasedebajo

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

Salida

68b696d7-320b-4402-a412-d9cee10fc6a3

Gracias !

SwiftDeveloper
fuente
1
Gracias. ahora esNSUUID().uuidString.lowercased()
Patrick Dura
44
¿Cuál es el beneficio de usar minúsculas como esta?
Luke Stanyer
¿Quizás es más agradable a la vista que las mayúsculas?
tgunr
5

Cada vez se generará lo mismo:

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

Cada vez que se generará uno nuevo:

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