我们如何在Objective C中获得唯一的ID。我想为我的会话创建一个唯一的ID &然后每次发生服务器调用时都会生成一个ID。每次这个ID应该是唯一的。在Objective C中生成一个唯一的ID
我尝试使用CFUUID类,它给了我们一个巨大的唯一ID(4FE9D00C-531E-45E8-B10E-11968ACC36E9)。我想要一个更小尺寸的唯一ID。
任何线索?
我们如何在Objective C中获得唯一的ID。我想为我的会话创建一个唯一的ID &然后每次发生服务器调用时都会生成一个ID。每次这个ID应该是唯一的。在Objective C中生成一个唯一的ID
我尝试使用CFUUID类,它给了我们一个巨大的唯一ID(4FE9D00C-531E-45E8-B10E-11968ACC36E9)。我想要一个更小尺寸的唯一ID。
任何线索?
guid(通过剪切组合)生成一个唯一的ID。如果你想要的字符少,那么一个选项是base64编码guid。这允许每个字符而不是16 64种可能性(0-9,AF)
此:
540c2d5f-a9ab-4414-bd36-9999f5388773
变为:
Xy0MVKupFES9NpmZ9TiHcw
下面是一个关于objective-c编码/解码的SO帖子(看看@ Mike Ho的帖子):
这是我的问题也和我喜欢的答案,但我想,让这里的代码做的,我知道这是旧的,但也许它可以帮助别人:
// 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;
}
您可以尝试以下
1-
CFUUIDRef udidCFUUIDRef = CFUUIDCreate(NULL);
NSString *UUIDString_token_name = (NSString *) CFBridgingRelease(CFUUIDCreateString(NULL, udidCFUUIDRef));
2-
之一
为什么你需要它更短?为确保它的独特性,它需要很长的时间。 – 2012-01-11 00:17:43
我需要在会话ID附加请求ID,这将使这个字符串是一个巨大的。我将在服务器上记录此字符串以用于任何跟踪目的。 – Abhinav 2012-01-11 00:20:13
你是否需要它更短,还是你需要它是独一无二的? – 2012-01-11 00:44:47