Quero poder criar um GUID / UUID no iPhone e iPad.
A intenção é poder criar chaves para dados distribuídos todos únicos. Existe uma maneira de fazer isso com o SDK do iOS?
Quero poder criar um GUID / UUID no iPhone e iPad.
A intenção é poder criar chaves para dados distribuídos todos únicos. Existe uma maneira de fazer isso com o SDK do iOS?
Respostas:
[[UIDevice currentDevice] uniqueIdentifier]
Retorna o ID exclusivo do seu iPhone.
EDIT:
-[UIDevice uniqueIdentifier]
agora está obsoleto e os aplicativos estão sendo rejeitados da App Store por usá-lo. O método abaixo agora é a abordagem preferida.
Se você precisar criar vários UUID, use este método (com ARC):
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge NSString *)string;
}
EDIT: 29 de janeiro de 2014: se você estiver segmentando o iOS 6 ou posterior, agora poderá usar o método muito mais simples:
NSString *UUID = [[NSUUID UUID] UUIDString];
Aqui está o código simples que estou usando, compatível com o ARC.
+(NSString *)getUUID
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
return uuidString;
}
No iOS 6, você pode usar facilmente:
NSUUID *UUID = [NSUUID UUID];
NSString* stringUUID = [UUID UUIDString];
Mais detalhes em Documentações da Apple
Em Swift :
var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
A técnica mais simples é usar NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
. Consulte a referência de classe NSProcessInfo .
Fiz upload da minha implementação simples, mas rápida, de uma classe Guid para ObjC aqui: obj-c GUID
Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);
Ele também pode analisar de e para vários formatos de string.