Pergunta

Existe um construído em função equivalente à do .NET

Guid.NewGuid();

em Cocoa?

Meu desejo é produzir uma corda ao longo das linhas de 550e8400-e29b-41d4-a716-446655440000 o que representa um identificador único.

Foi útil?

Solução

UUIDs são tratadas no Núcleo Foundation, pela biblioteca CFUUID. A função que você está procurando é CFUUIDCreate .

FYI para outras pesquisas: estes são mais comumente conhecido como UUIDs, o termo GUID não é usado muitas vezes fora do mundo da Microsoft. Você pode ter mais sorte com esse termo de pesquisa.

Outras dicas

Alguns código:

Para uma cadeia de UUID, o seguinte método de classe deve fazer o truque:

+(NSString*)UUIDString {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [(NSString *)string autorelease];
}

Se você realmente quer que os bytes (não a String):

+(CFUUIDBytes)UUIDBytes {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFUUIDBytes bytes = CFUUIDGetUUIDBytes(theUUID);
    CFRelease(theUUID);
    return bytes;
}

onde CFUUIDBytes é um struct do UUID bytes.

Pelo menos no MacOSX 10.5.x que você pode usar a linha de comando da ferramenta "uuidgen" para obter sua seqüência por exemplo.

$ uuidgen

054209C4-3873-4679-8104-3C18AE780512

há também um -hdr opção com este comand que convenientemente gera isso em grande estilo cabeçalho

Veja man-page para mais infos.

ou há a ferramenta de linha de comando uuidgen.

Desde 10.8 você pode também usar: NSString * uuidString = [[NSUUID UUID] UUIDString];

Desde 10.3 ou assim, você pode usar [[NSProcessInfo processInfo] globallyUniqueString] . No entanto, enquanto este atualmente gera um UUID, ele nunca foi e ainda não é garantido para fazer isso, então se você realmente precisa de um UUID e não apenas qualquer string única , você deve usar CFUUID.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top