如何在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一个NSConcreteUUID
types的对象,可以轻松地转换为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是因为:
- 它永远不会改变(*即使应用程序将被删除)
- 苹果批准它。