如何使用iPhone SDK创buildGUID / UUID

我希望能够在iPhone和iPad上创build一个GUID / UUID。

目的是能够为分布式数据创build唯一的密钥。 有没有办法做到这一点与iOS SDK?

[[UIDevice currentDevice] uniqueIdentifier] 

返回您的iPhone的唯一ID。

编辑: -[UIDevice uniqueIdentifier]现在已被弃用,应用程序被拒绝从App Store使用它。 下面的方法是现在的首选方法。

如果您需要创build多个UUID,只需使用此方法(使用ARC):

 + (NSString *)GetUUID { CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); return (__bridge NSString *)string; } 

编辑:2014年1月29日:如果您的目标是iOS 6或更高版本,现在可以使用更简单的方法:

 NSString *UUID = [[NSUUID UUID] UUIDString]; 

这是我正在使用的简单代码,符合ARC。

 +(NSString *)getUUID { CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault); NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId); CFRelease(newUniqueId); return uuidString; } 

在iOS 6中,您可以轻松使用:

 NSUUID *UUID = [NSUUID UUID]; NSString* stringUUID = [UUID UUIDString]; 

Apple的文档中有更多的细节

回顾Apple Developer文档我发现CFUUID对象在iPhone OS 2.0和更高版本上可用。

最简单的方法是使用NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString] 。 请参阅NSProcessInfo类的参考。

Swift中

 var uuid: String = NSUUID().UUIDString println("uuid: \(uuid)") 

Swift 3.0中

 var uuid = UUID().uuidString 

我已经在这里上传了一个简单而快速的ObjC Guid类实现: obj-c GUID

 Guid* guid = [Guid randomGuid]; NSLog("%@", guid.description); 

它也可以parsing各种string格式。