Domanda

Esiste una funzione integrata equivalente a .NET

Guid.NewGuid();

in Cocoa?

Il mio desiderio è di produrre una stringa lungo le linee di 550e8400-e29b-41d4-a716-446655440000 che rappresenta un identificatore univoco.

È stato utile?

Soluzione

Gli UUID sono gestiti in Core Foundation, dalla libreria CFUUID. La funzione che stai cercando è CFUUIDCreate .

Cordiali saluti per ulteriori ricerche: questi sono più comunemente noti come UUID, il termine GUID non viene usato molto spesso al di fuori del mondo Microsoft. Potresti avere più fortuna con quel termine di ricerca.

Altri suggerimenti

Alcuni codici:

Per un UUID di stringa, il seguente metodo di classe dovrebbe fare il trucco:

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

se vuoi davvero i byte (non la stringa):

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

dove CFUUIDBytes è un struct dei byte UUID.

Almeno su MacOSX 10.5.x potresti utilizzare lo strumento da riga di comando "uuidgen" per ottenere la tua stringa  per es.

$ uuidgen

054209C4-3873-4679-8104-3C18AE780512

c'è anche un'opzione -hdr con questo comando che la genera comodamente in stile header

Vedi man-page per ulteriori informazioni.

oppure c'è lo strumento da riga di comando uuidgen .

Dal 10.8 puoi anche usare: NSString * uuidString = [[[UUID NSUUID] UUIDString];

Consulta Wikipedia e l'articolo Core Foundation .

A partire dalla 10.3 circa, puoi utilizzare [[NSProcessInfo processInfo] globallyUniqueString] . Tuttavia, sebbene questo attualmente generi un UUID, non è mai stato e non è garantito che lo faccia, quindi se hai davvero bisogno di un UUID e non solo una stringa univoca , dovresti usare CFUUID.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top