是否有与.NET的
等效的内置函数Guid.NewGuid();
在可可?
我希望在550e8400-e29b-41d4-a716-446655440000
的行上生成一个代表唯一标识符的字符串。
答案 0 :(得分:42)
UUID由Core Foundation处理,由CFUUID库处理。您正在寻找的功能是CFUUIDCreate。
进一步搜索的FYI:这些通常称为UUID,术语GUID在Microsoft世界之外并不经常使用。您可能会对该搜索字词感到更幸运。
答案 1 :(得分: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字节的struct。
答案 2 :(得分:26)
至少在MacOSX 10.5.x上,您可以使用命令行工具“uuidgen”来获取字符串 e.g。
$ uuidgen
054209C4-3873-4679-8104-3C18AE780512
还有一个选项-hdr,使用此命令可以方便地以标题样式
生成它有关更多信息,请参阅man-page。
答案 3 :(得分:12)
或者是uuidgen
命令行工具。
答案 4 :(得分:9)
从10.8开始你也可以使用:NSString * uuidString = [[NSUUID UUID] UUIDString];
答案 5 :(得分:4)
查看Wikipedia文章和Core Foundation页面。
答案 6 :(得分:2)
从10.3左右开始,您可以使用[[NSProcessInfo processInfo] globallyUniqueString]
。但是,虽然此当前生成一个UUID,但它从来没有并且仍然不能保证这样做,所以如果你真的需要一个 UUID 而不是任何唯一的字符串,你应该使用CFUUID。
答案 7 :(得分:1)
您可以在 ~/.bash_profile
中创建别名并从终端调用 uuid
:
alias uuid="uuidgen | tr '[:upper:]' '[:lower:]'"