当前位置:  开发笔记 > IOS > 正文

如何使用iOS创建GUID/UUID

如何解决《如何使用iOS创建GUID/UUID》经验,为你挑选了8个好方法。

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

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



1> Stephan Burl..:
[[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];


从iOS 6开始,您可以使用:NSString*UUID = [[NSUUID UUID] UUIDString];
自iOS 5起,[[UIDevice currentDevice] uniqueIdentifier]已被弃用,Apple现在拒绝使用它的应用程序(截至2012年3月).其余的回复仍然准确.
关于这个问题已经有一段时间了,我很确定最初的问题不是关于设备的唯一标识符,而是关于为某些东西获得有用的通用唯一标识符.
要使此ARC兼容,您必须强制转换字符串对象并删除自动释放调用.换句话说,添加强制转换:NSString*string =(__ bridge_transfer NSString*)CFUUIDCreateString(NULL,theUUID);

2> trillions..:

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

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

    return uuidString;
}


老实说,这应该是接受的答案,原始问题要求GUID或UUID生成器,每个人都回答如何获取手机的UDID.通用唯一标识符(UUID)和唯一设备标识符(UDID)不是一回事.

3> Arian Sharif..:

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

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

Apple的文档中有更多细节


这是迄今为止最简单的解决方案.如果您不必在iOS 6之前支持,请使用此功能.我使用核心数据生成永久ID,但这要好得多.+1
@GajendraKChauhan不是全部吗?!?!?!?!?!?!

4> Henk..:

查看Apple Developer文档,我发现iPhone OS 2.0及更高版本上提供了CFUUID对象.



5> Ryan McCuaig..:

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


这将返回进程的唯一标识符.它与GUID没有相似之处.从文档:"ID包括主机名,进程ID和时间戳,以确保该ID对于网络是唯一的"

6> King-Wizard..:

Swift中:

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



7> Radu Diță..:

Swift 3.0中

var uuid = UUID().uuidString



8> tumtumtum..:

我在这里为ObjC上传了我简单但快速的Guid类实现:obj-c GUID

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

它也可以解析各种字符串格式.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有