我希望能够在iPhone和iPad上创建GUID/UUID.
目的是能够为所有唯一的分布式数据创建密钥.有没有办法用iOS SDK做到这一点?
[[UIDevice currentDevice] uniqueIdentifier]
返回iPhone的唯一ID.
编辑:
-[UIDevice uniqueIdentifier]
现已弃用,应用程序正在从App Store拒绝使用它.以下方法现在是首选方法.
如果您需要创建多个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文档,我发现iPhone OS 2.0及更高版本上提供了CFUUID对象.
最简单的技术是使用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);
它也可以解析各种字符串格式.