我们如何在Objective C中获取唯一ID。我想为我的会话创建一个唯一的ID&然后每次发生服务器调用时生成一个ID。每次此ID都应该是唯一的。
我尝试使用CFUUID类,它为我们提供了一个巨大的唯一ID(4FE9D00C-531E-45E8-B10E-11968ACC36E9)。我想要一个更小尺寸的唯一ID。
有任何线索吗?
答案 0 :(得分:6)
guid(通过剪切组合)生成唯一ID。如果你想要的字符更少,那么一个选项是base64encode guid。这允许每个字符有64种可能性而不是16(0-9,A-F)
此:
540c2d5f-a9ab-4414-bd36-9999f5388773
变为:
Xy0MVKupFES9NpmZ9TiHcw
这是关于objective-c编码/解码的SO帖子(看看@ Mike Ho帖子):
答案 1 :(得分:0)
这也是我的问题,我喜欢这个答案,但我想在这里完成一个代码,我知道这是旧的,但也许它可以帮助某人:
// DataWithLength is a byte size of UUID. So 32 bytes = 256 bits string
- (NSString*)generateSecureUUID {
NSMutableData *data = [NSMutableData dataWithLength:32];
int result = SecRandomCopyBytes(NULL, 32, data.mutableBytes);
NSAssert(result == 0, @"Error generating random bytes: %d", errno);
NSString *base64EncodedData = [data base64EncodedStringWithOptions:0];
return base64EncodedData;
}
答案 2 :(得分:0)
您可以尝试以下其中一种
1 -
CFUUIDRef udidCFUUIDRef = CFUUIDCreate(NULL);
NSString *UUIDString_token_name = (NSString *) CFBridgingRelease(CFUUIDCreateString(NULL, udidCFUUIDRef));
2-
NSString *UUIDString = [[NSUUID UUID] UUIDString];