cocoa - uuid php
¿Hay algún método para generar un GUID estándar de 128 bits(UUID) en Mac? (7)
¿Hay una función incorporada equivalente a la de .NET
Guid.NewGuid();
en Cocoa?
Mi deseo es producir una cadena a lo largo de las líneas de 550e8400-e29b-41d4-a716-446655440000
que representa un identificador único.
Cierto código:
Para un UUID de cadena, el siguiente método de clase debería ser el truco:
+(NSString*)UUIDString {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [(NSString *)string autorelease];
}
si realmente quieres los bytes (no la cadena):
+(CFUUIDBytes)UUIDBytes {
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFUUIDBytes bytes = CFUUIDGetUUIDBytes(theUUID);
CFRelease(theUUID);
return bytes;
}
donde CFUUIDBytes es una estructura de los bytes UUID.
Los UUID se manejan en Core Foundation, por la biblioteca CFUUID. La función que está buscando es CFUUIDCreate .
FYI para búsquedas adicionales: estos son más comúnmente conocidos como UUID, el término GUID no se usa muy a menudo fuera del mundo de Microsoft. Es posible que tenga más suerte con ese término de búsqueda.
Mira el artículo de Wikipedia y la página de Core Foundation .
Al menos en MacOSX 10.5.x puede usar la herramienta de línea de comandos "uuidgen" para obtener su cadena, por ejemplo
$ uuidgen
054209C4-3873-4679-8104-3C18AE780512
también hay una opción -hdr con este comando que lo genera convenientemente en el estilo de encabezado
Ver man-page para más información.
Desde 10.3 o menos, puede usar [[NSProcessInfo processInfo] globallyUniqueString]
. Sin embargo, aunque esto actualmente genera un UUID, nunca ha sido ni está garantizado que lo haga, por lo que si realmente necesita un UUID y no solo una cadena única, debe usar CFUUID.
o está la herramienta de línea de comandos uuidgen
.
Desde 10.8 también podría usar: NSString * uuidString = [[NSUUID UUID] UUIDString];