Pregunta

¿Existe una función integrada equivalente a la de .NET?

Guid.NewGuid();

en cacao?

Mi deseo es producir una cadena a lo largo de las líneas de 550e8400-e29b-41d4-a716-446655440000 que representa un identificador único.

¿Fue útil?

Solución

Los UUID se manejan en Core Foundation, por la biblioteca CFUUID. La función que está buscando es CFUUIDCreate .

Para su información para búsquedas adicionales: estos se conocen comúnmente 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.

Otros consejos

Algún código:

Para un UUID de cadena, el siguiente método de clase debería funcionar:

+(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 un struct de los bytes UUID.

Al menos en MacOSX 10.5.x puede usar la herramienta de línea de comando " uuidgen " para conseguir tu cuerda  por ejemplo,

$ uuidgen

054209C4-3873-4679-8104-3C18AE780512

también hay una opción -hdr con este comando y lo genera convenientemente en estilo de encabezado

Consulte la página de manual para obtener más información.

o existe la herramienta de línea de comando uuidgen .

Desde 10.8 también puede usar: NSString * uuidString = [[NSUUID UUID] UUIDString];

Consulte el Wikipedia y el artículo página Core Foundation .

Desde 10.3 más o menos, puede usar [[NSProcessInfo processInfo] globallyUniqueString] . Sin embargo, aunque esto actualmente genera un UUID, nunca lo ha sido y todavía no se garantiza que lo haga, así que si realmente necesita un UUID y no cualquier cadena única , debe usar CFUUID.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top