Voglio essere in grado di creare un GUID / UUID su iPhone e iPad.
L'intenzione è quella di essere in grado di creare chiavi per i dati distribuiti che sono tutti unici. C'è un modo per farlo con l'SDK di iOS?
Voglio essere in grado di creare un GUID / UUID su iPhone e iPad.
L'intenzione è quella di essere in grado di creare chiavi per i dati distribuiti che sono tutti unici. C'è un modo per farlo con l'SDK di iOS?
Risposte:
[[UIDevice currentDevice] uniqueIdentifier]
Restituisce l'ID univoco del tuo iPhone.
EDIT:
-[UIDevice uniqueIdentifier]
ora è deprecato e le app vengono rifiutate dall'App Store per l'utilizzo. Il metodo seguente è ora l'approccio preferito.
Se devi creare più UUID, usa questo metodo (con ARC):
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge NSString *)string;
}
MODIFICA: 29 gennaio 2014: se scegli come target iOS 6 o versioni successive, ora puoi utilizzare il metodo molto più semplice:
NSString *UUID = [[NSUUID UUID] UUIDString];
Ecco il semplice codice che sto usando, conforme ad ARC.
+(NSString *)getUUID
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
return uuidString;
}
In iOS 6 puoi facilmente usare:
NSUUID *UUID = [NSUUID UUID];
NSString* stringUUID = [UUID UUIDString];
Maggiori dettagli nella documentazione di Apple
Esaminando la documentazione per gli sviluppatori Apple, ho scoperto che l' oggetto CFUUID è disponibile su iPhone OS 2.0 e versioni successive.
La tecnica più semplice è usare NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
. Vedere il riferimento alla classe NSProcessInfo .
Ho caricato la mia semplice ma veloce implementazione di una classe Guid per ObjC qui: obj-c GUID
Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);
Può anche analizzare da e verso vari formati di stringa.