如何在ios中生成UUID

如何在目标c中获得一个UUID,就像在Java中一样,UUID被用来产生代表128位值的唯一随机数。

尝试:

CFUUIDRef udid = CFUUIDCreate(NULL); NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid); 

更新:

从iOS 6开始, 有一种更简单的方法来生成UUID 。 和往常一样,有多种方法可以做到这一点:

创build一个UUIDstring:

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

创build一个UUID:

 [[NSUUID UUID]; // which is same as.. [[NSUUID] alloc] init]; 

创build一个NSConcreteUUIDtypes的对象,可以轻松地转换为NSString ,如下所示: BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE

从文档中注意到:

注意: NSUUID类不是通过CoreFoundation的CFUUIDRef桥接的。 如果需要,使用UUIDstring在CFUUID和NSUUID之间转换。 两个NSUUID对象不保证可以通过指针值进行比较(如CFUUIDRef所示); 使用isEqual:比较两个NSUUID实例。

 + (NSString *)uniqueFileName { CFUUIDRef theUniqueString = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUniqueString); CFRelease(theUniqueString); return [(NSString *)string autorelease]; } 

迅猛版的猛禽答案 :

 let uuid = NSUUID().UUIDString 
 -(NSString*) myUUID() { CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault); CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID); NSString *guid = (__bridge NSString *)newUniqueIDString; CFRelease(newUniqueIDString); CFRelease(newUniqueID); return([guid lowercaseString]); } 

您可以在iOS 5或更低版本中使用CFUUID,在iOS 6和7中使用NSUUID。为了使其更安全,您可以将UUID存储在钥匙串中

我build议你检查这个库: https : //github.com/fabiocaccamo/FCUUID

它提供了非常简单的API来获得具有不同持久性级别的通用唯一标识符。

它兼容:iOS5,iOS6,iOS7,iOS8

 - (NSString*)generateGUID{ CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); return [NSString stringWithFormat:@"%@", string]; } 
 #import <AdSupport/AdSupport.h> NSString* sClientID = [[[ASIdentifierManager sharedManager]advertisingIdentifier] UUIDString]; 

最好的UUID是因为:

  1. 它永远不会改变(*即使应用程序将被删除)
  2. 苹果批准它。