Cómo generar UUID en ios

Respuestas:

175

Tratar:

CFUUIDRef udid = CFUUIDCreate(NULL);
NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid);

ACTUALIZAR:

A partir de iOS 6, existe una forma más sencilla de generar UUID . Y como de costumbre, hay varias formas de hacerlo:

Cree una cadena UUID:

NSString *uuid = [[NSUUID UUID] UUIDString];

Crea un UUID:

[NSUUID UUID]; // which is the same as..
[[NSUUID] alloc] init]; 

Crea un objeto de tipo NSConcreteUUIDy se puede convertir fácilmente en NSString, y tiene este aspecto:BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE

NOTA de la documentación:

Nota: La clase NSUUID no es un puente gratuito con CFUUIDRef de CoreFoundation. Utilice cadenas UUID para convertir entre CFUUID y NSUUID, si es necesario. No se garantiza que dos objetos NSUUID sean comparables por el valor del puntero (como lo es CFUUIDRef); use isEqual: para comparar dos instancias NSUUID.

Raptor
fuente
6
Si está utilizando iOS 6, puede utilizar NSUUID: NSString * uuid = [[NSUUID UUID] UUIDString];
Eli Burke
2
en la línea 1, CFUUIDRef udidprobablemente debería ser CFUUIDRef uuidpara evitar una posible confusión de UDID (Identificador único de dispositivo) con UUID (Identificador único universal)
CgodLEY
6
+ (NSString *)uniqueFileName
{
    CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
    CFRelease(theUniqueString);
    return [(NSString *)string autorelease];
}
Bergasmos
fuente
Realmente no debería dejar el código sin explicación, sin importar cuán sencillo sea
Sirens
Errr, no estoy seguro de por qué seleccionaste mi respuesta particular para comentar un año y medio después XD.
Bergasmos
No me di cuenta de que tenía 1,5 años. Oh, bueno, funciona muy bien. :)
Sirens
3
-(NSString*) myUUID()
{
    CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault);
    CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
    NSString *guid = (__bridge NSString *)newUniqueIDString;
    CFRelease(newUniqueIDString);
    CFRelease(newUniqueID);
    return([guid lowercaseString]);
}
Dominic Sander
fuente
1

puede usar CFUUID para iOS 5 o una versión inferior y NSUUID para iOS 6 y 7. para hacerlo más seguro, puede almacenar su UUID en el llavero

Veeru Sharma
fuente
0
- (NSString*)generateGUID{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [NSString stringWithFormat:@"%@", string];
}
Sargis
fuente
1
Las respuestas de solo código no son útiles para la comunidad. Por favor mire Cómo responder
JimHawkins
-1

Para Swift 5.0, use esto,

    let uuidRef = CFUUIDCreate(nil)
    let uuidStringRef = CFUUIDCreateString(nil, uuidRef)
    let uuid = uuidStringRef as String? ?? ""
Sureshkumar Linganathan
fuente