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


55
También puede usar let uuid = NSUUID.UUID (). UUIDString
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)

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.


18

Para Swift 4 ;

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

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.


8

También lo canusas lowercasedebajo

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

Salida

68b696d7-320b-4402-a412-d9cee10fc6a3

Gracias !


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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.