27

是否有与 .NET 等效的内置函数

Guid.NewGuid();

在可可?

我的愿望是产生一个字符串,550e8400-e29b-41d4-a716-446655440000它代表一个唯一标识符。

4

8 回答 8

43

UUID 在 Core Foundation 中由 CFUUID 库处理。您正在寻找的功能是CFUUIDCreate

仅供进一步搜索:这些通常称为 UUID,术语 GUID 在 Microsoft 世界之外并不经常使用。您可能会更幸运地使用该搜索词。

于 2008-11-15T01:13:04.747 回答
39

至少在 MacOSX 10.5.x 上,您可以使用命令行工具“uuidgen”来获取您的字符串,例如

$ uuidgen

054209C4-3873-4679-8104-3C18AE780512

还有一个带有此命令的选项 -hdr 可以方便地以标题样式生成它

有关更多信息,请参见手册页。

于 2009-04-14T13:59:55.803 回答
32

一些代码:

对于字符串 UUID,以下类方法应该可以解决问题:

+(NSString*)UUIDString {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [(NSString *)string autorelease];
}

如果你真的想要字节(不是字符串):

+(CFUUIDBytes)UUIDBytes {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFUUIDBytes bytes = CFUUIDGetUUIDBytes(theUUID);
    CFRelease(theUUID);
    return bytes;
}

其中 CFUUIDBytes 是 UUID 字节的结构

于 2008-11-15T23:16:29.380 回答
19

或者有uuidgen命令行工具。

于 2008-11-15T02:04:51.943 回答
10

从 10.8 开始,您还可以使用:

NSString *uuidString = [[NSUUID UUID] UUIDString];
于 2014-02-28T10:53:30.340 回答
4

查看Wikipedia文章和Core Foundation页面。

于 2008-11-15T00:41:41.097 回答
4

您可以在终端中创建别名~/.bash_profile并调用uuid

alias uuid="uuidgen | tr '[:upper:]' '[:lower:]'"
于 2021-01-11T16:14:47.727 回答
2

从 10.3 左右开始,您可以使用[[NSProcessInfo processInfo] globallyUniqueString]. 然而,虽然这目前会生成一个 UUID,但它从来没有并且仍然不能保证这样做,所以如果你真的需要一个UUID而不仅仅是任何唯一的字符串,你应该使用 CFUUID。

于 2008-11-15T03:34:06.613 回答