我想在iPhone和iPad上创建GUID/UUID。
目的是为了创建唯一的分布式数据密钥,是否有使用iOS SDK来完成这个任务的方法?
[[UIDevice currentDevice] uniqueIdentifier]
返回您的 iPhone 的唯一标识符。
编辑:
-[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];
请参阅苹果文档获取更多详细信息。
在Swift中:
var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
最简单的技术是使用NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]
。请参阅NSProcessInfo类参考文档。
在Swift 3.0中
var uuid = UUID().uuidString
我在这里上传了一个简单但快速的ObjC Guid类的实现:obj-c GUID
Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);
它能够解析各种字符串格式。