Je veux pouvoir créer un GUID / UUID sur l'iPhone et l'iPad.
L'intention est de pouvoir créer des clés pour des données distribuées qui sont toutes uniques. Existe-t-il un moyen de le faire avec le SDK iOS?
Je veux pouvoir créer un GUID / UUID sur l'iPhone et l'iPad.
L'intention est de pouvoir créer des clés pour des données distribuées qui sont toutes uniques. Existe-t-il un moyen de le faire avec le SDK iOS?
Réponses:
[[UIDevice currentDevice] uniqueIdentifier]
Renvoie l'ID unique de votre iPhone.
EDIT:
-[UIDevice uniqueIdentifier]
est désormais obsolète et les applications sont rejetées de l'App Store pour son utilisation. La méthode ci-dessous est désormais l'approche privilégiée.
Si vous devez créer plusieurs UUID, utilisez simplement cette méthode (avec ARC):
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge NSString *)string;
}
EDIT: 29 janvier 2014: si vous ciblez iOS 6 ou une version ultérieure, vous pouvez désormais utiliser la méthode beaucoup plus simple:
NSString *UUID = [[NSUUID UUID] UUIDString];
Voici le code simple que j'utilise, conforme à ARC.
+(NSString *)getUUID
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
return uuidString;
}
Dans iOS 6, vous pouvez facilement utiliser:
NSUUID *UUID = [NSUUID UUID];
NSString* stringUUID = [UUID UUIDString];
Plus de détails dans les documentations d'Apple
Dans Swift :
var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
La technique la plus simple est d'utiliser NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
. Voir la référence de classe NSProcessInfo .
J'ai téléchargé mon implémentation simple mais rapide d'une classe Guid pour ObjC ici: obj-c GUID
Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);
Il peut également analyser différents formats de chaîne.