如何在ios中生成UUID

Posted

技术标签:

【中文标题】如何在ios中生成UUID【英文标题】:How to generate UUID in ios 【发布时间】:2013-01-16 06:19:14 【问题描述】:

如何在objective c中获取UUID,就像在Java中一样,UUID用于生成代表128位值的唯一随机数。

【问题讨论】:

How to create a GUID/UUID using the iPhone SDK的可能重复 【参考方案1】:

试试:

CFUUIDRef udid = CFUUIDCreate(NULL);
NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid);

更新:

ios 6 开始,there is an easier way to generate UUID。和往常一样,有多种方法可以做到这一点:

创建一个 UUID 字符串:

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

创建一个 UUID:

[NSUUID UUID]; // which is the same as..
[[NSUUID] alloc] init]; 

创建一个NSConcreteUUID 类型的对象,可以很容易地转换为NSString,看起来像这样:BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE

文档中的注意事项:

注意: NSUUID 类不是与 CoreFoundation 的 CFUUIDRef 桥接的免费电话。如果需要,使用 UUID 字符串在 CFUUID 和 NSUUID 之间进行转换。不能保证两个 NSUUID 对象可以通过指针值进行比较(就像 CFUUIDRef 一样);使用 isEqual: 比较两个 NSUUID 实例。

【讨论】:

如果你使用的是iOS 6,你可以使用NSUUID:NSString * uuid = [[NSUUID UUID] UUIDString]; 在第 1 行,CFUUIDRef udid 可能应该是 CFUUIDRef uuid 以避免 UDID(唯一设备标识符)与 UUID(通用唯一标识符)的潜在混淆【参考方案2】:

Raptor's answer 的 Swift 版本:

let uuid = UUID().uuidString

【讨论】:

【参考方案3】:
+ (NSString *)uniqueFileName

    CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
    CFRelease(theUniqueString);
    return [(NSString *)string autorelease];

【讨论】:

你真的不应该只留下代码而不解释,无论它多么简单 Errr,不知道你为什么选择我的特定回复来评论一年半后 XD。 我没有意识到它已经 1.5 岁了.. 哦,好吧,它确实很好用.. :)【参考方案4】:
-(NSString*) myUUID()

    CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault);
    CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
    NSString *guid = (__bridge NSString *)newUniqueIDString;
    CFRelease(newUniqueIDString);
    CFRelease(newUniqueID);
    return([guid lowercaseString]);

【讨论】:

【参考方案5】:

您可以在 iOS 5 或更低版本中使用 CFUUID,在 iOS 6 和 7 中使用 NSUUID。 为了使其更安全,您可以将 UUID 存储在钥匙串中

【讨论】:

【参考方案6】:
- (NSString*)generateGUID
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [NSString stringWithFormat:@"%@", string];

【讨论】:

纯代码答案对社区没有用处。请看How to Answer【参考方案7】:

对于 Swift 5.0,使用这个,

    let uuidRef = CFUUIDCreate(nil)
    let uuidStringRef = CFUUIDCreateString(nil, uuidRef)
    let uuid = uuidStringRef as String? ?? ""

【讨论】:

以上是关于如何在ios中生成UUID的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中生成设备特定的唯一uuid

如何在 C++ 中生成 UUID,而不使用 boost 库?

如何在jquery中生成uuid

如何在 SAP UI5 代码中生成 UUID? [复制]

如何在 R 中生成 GUID?

如何在 API 网关中为请求/响应映射添加速度模板中生成随机 UUID 等功能