有没有在Mac上生成标准128位GUID(UUID)的方法?

Law*_*ton 22 macos uuid cocoa guid core-foundation

是否有与.NET相当的内置函数

Guid.NewGuid();
Run Code Online (Sandbox Code Playgroud)

在可可?

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

Jör*_*tag 42

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

进一步搜索的FYI:这些通常称为UUID,术语GUID在Microsoft世界之外并不经常使用.您可能会对该搜索字词有更多好运.


Bar*_*ark 32

一些代码:

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

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

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

+(CFUUIDBytes)UUIDBytes {
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFUUIDBytes bytes = CFUUIDGetUUIDBytes(theUUID);
    CFRelease(theUUID);
    return bytes;
}
Run Code Online (Sandbox Code Playgroud)

其中CFUUIDBytes是UUID字节的结构.


小智 28

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

$ uuidgen

054209C4-3873-4679-8104-3C18AE780512

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

有关更多信息,请参见man-page.


小智 13

或者是uuidgen命令行工具.

  • 显然,该实用程序已更名为"uuidgen".至少,从Snow Leopard开始. (5认同)

Dav*_*man 9

从10.8开始你也可以使用:NSString*uuidString = [[NSUUID UUID] UUIDString];


Are*_*efe 6

您可以在 中创建别名~/.bash_profileuuid从终端调用:

alias uuid="uuidgen | tr '[:upper:]' '[:lower:]'"
Run Code Online (Sandbox Code Playgroud)