如何使用iOS创建GUID/UUID

如何使用iOS创建GUID/UUID,ios,uuid,guid,Ios,Uuid,Guid,我希望能够在iPhone和iPad上创建GUID/UUID 其目的是能够为所有唯一的分布式数据创建密钥。iOS SDK有办法做到这一点吗?查看Apple开发者文档,我发现该对象在iPhone OS 2.0及更高版本上可用 [[UIDevice currentDevice] uniqueIdentifier] 返回iPhone的唯一ID 编辑:-[UIDevice uniqueIdentifier]现在已被弃用,应用程序因使用它而被应用商店拒绝。下面的方法现在是首选方法 如果需要创建多个UUID

我希望能够在iPhone和iPad上创建GUID/UUID


其目的是能够为所有唯一的分布式数据创建密钥。iOS SDK有办法做到这一点吗?

查看Apple开发者文档,我发现该对象在iPhone OS 2.0及更高版本上可用

[[UIDevice currentDevice] uniqueIdentifier]
返回iPhone的唯一ID

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

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

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

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

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

我已将ObjC的Guid类的简单但快速的实现上传到此处:


它还可以解析不同的字符串格式。

下面是我正在使用的与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)")

在Swift 3.0中

var uuid = UUID().uuidString

返回进程的唯一标识符。它与GUID没有相似之处。从文档中可以看出:“该ID包括主机名、进程ID和时间戳,确保该ID对于网络是唯一的。”您可能是对的。这是一种实用的单衬里,可能不像CFUUID那样防弹。任何需要更严格要求的人都应该求助于CoreFoundation。[[UIDevice currentDevice]uniqueIdentifier]从iOS 5开始就被弃用,苹果现在拒绝使用它的应用程序(截至2012年3月)。回答的其余部分仍然是准确的。围绕这个问题已经有一段时间了,我很确定最初的问题不是关于设备的唯一标识符,而是关于为某些东西获取一个有用的通用唯一标识符。要使此ARC兼容,您必须强制转换string对象并删除autorelease调用。换句话说,添加cast:NSString*string=(uu桥u传输NSString*)CFUUIDCreateString(NULL,theUUID);从iOS 6开始,您可以使用:NSString*UUID=[[nsuid-UUID]UUIDString];如果我使用[[nsuid UUID]UUIDString];在iOS7及以上版本中,我的应用不会被苹果拒绝吗?老实说,这应该是被接受的答案,最初的问题是要一个GUID或UUID生成器,每个人的回答都是如何获得手机的UDID。通用唯一标识符(UUID)和唯一设备标识符(UDID)不是一回事;这是迄今为止最简单的解决方案。如果您不必支持iOS 6之前的版本,请使用此选项。我使用的是核心数据生成的永久ID,但这要好得多+1完美,谢谢你!这是我当天的+1答案:)每次我在模拟器中运行应用程序时,它都会发生变化。有一篇文章介绍了如何确保您永远不会丢失生成的UUID,即使在iOS 5和更高版本中使用钥匙链。
var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
var uuid = UUID().uuidString