在Objective C中生成一个唯一的ID

我们如何在Objective C中获得唯一的ID。我想为我的会话创build一个唯一的ID,然后在每次发生服务器调用时生成一个ID。 每次这个ID应该是唯一的。

我尝试使用CFUUID类,它给了我们一个巨大的唯一ID(4FE9D00C-531E-45E8-B10E-11968ACC36E9)。 我想要一个更小尺寸的唯一ID。

任何线索?

guid(通过剪切组合)生成一个唯一的id。 如果你想要的字符less,那么一个选项是base64编码的GUID。 这允许每个字符64个可能性而不是16个(0-9,AF)

这个:

540c2d5f-a9ab-4414-bd36-9999f5388773 

变为:

 Xy0MVKupFES9NpmZ9TiHcw 

例如:(C#虽然) http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx

这是一个关于objective-c编码/解码的SOpost(看看@ Mike Ho的post):

我如何做iphone-sdk的base64编码?

这也是我的问题,我喜欢这个答案,但是我想在这里写一个代码,我知道这是旧的,但也许它可以帮助某人:

 // 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-

 NSString *UUIDString = [[NSUUID UUID] UUIDString];