Question

Existe-t-il une fonction intégrée équivalente à celle de .NET

Guid.NewGuid();

dans le cacao?

Mon désir est de produire une chaîne inspirée de 550e8400-e29b-41d4-a716-446655440000 , ce qui représente un identifiant unique.

Était-ce utile?

La solution

Les UUID sont gérés dans Core Foundation, par la bibliothèque CFUUID. La fonction que vous recherchez est CFUUIDCreate .

FYI pour des recherches ultérieures: ce sont le plus souvent les UUID, le terme GUID n’est pas utilisé très souvent en dehors du monde Microsoft. Vous pourriez avoir plus de chance avec ce terme de recherche.

Autres conseils

Certains codes:

Pour un UUID de chaîne, la méthode de classe suivante devrait faire l'affaire:

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

si vous voulez vraiment les octets (pas la chaîne):

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

où CFUUIDBytes est un struct des octets UUID.

Au moins sous MacOSX 10.5.x, vous pouvez utiliser l'outil de ligne de commande " uuidgen " pour obtenir votre ficelle  par exemple

$ uuidgen

054209C4-3873-4679-8104-3C18AE780512

il y a aussi une option -hdr avec cette commande qui la génère commodément dans un style d'en-tête

Voir la page de manuel pour plus d'informations.

ou il y a l'outil de ligne de commande uuidgen .

Depuis 10.8, vous pouvez également utiliser: NSString * uuidString = [[NSUUID UUID] UUIDString];

Consultez l'article Wikipedia et le page Core Foundation .

Depuis environ 10.3, vous pouvez utiliser [[NSProcessInfo processInfo] globallyUniqueString] . Cependant, bien que cet actuellement génère un UUID, cela n'a jamais été et n'est toujours pas garanti, donc si vous avez vraiment besoin d'un UUID et non d'une chaîne unique , vous devez utiliser CFUUID.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top