如何在目标 c 中获得 UUID,就像在 JavaUUID 中一样,用于生成表示128位值的唯一随机数。
试试:
CFUUIDRef udid = CFUUIDCreate(NULL); NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid);
更新:
和往常一样,有很多方法可以做到这一点:
创建 UUID 字符串:
NSString *uuid = [[NSUUID UUID] UUIDString];
创建 UUID:
[NSUUID UUID]; // which is the same as.. [[NSUUID] alloc] init];
创建一个类型为 NSConcreteUUID的对象,可以很容易地强制转换为 NSString,看起来像这样: BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE
NSConcreteUUID
NSString
BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE
文件注释:
注意: NSUUID 类不是免费与 CoreFoundation 的 CFUUIDRef 连接的。如果需要,可以使用 UUID 字符串在 CFUUID 和 NSUUID 之间进行转换。不能保证两个 NSUUID 对象通过指针值进行比较(就像 CFUUIDRef 那样) ; 请使用 isequals: 比较两个 NSUUID 实例。
+ (NSString *)uniqueFileName { CFUUIDRef theUniqueString = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUniqueString); CFRelease(theUniqueString); return [(NSString *)string autorelease]; }
-(NSString*) myUUID() { CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault); CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID); NSString *guid = (__bridge NSString *)newUniqueIDString; CFRelease(newUniqueIDString); CFRelease(newUniqueID); return([guid lowercaseString]); }
你可以对 iOS5或更低版本使用 CFUUID,对 iOS6和7使用 NSUUID。 为了使它更安全,您可以存储您的 UUID 在钥匙链
快速版 猛禽的回答:
let uuid = UUID().uuidString
- (NSString*)generateGUID{ CFUUIDRef theUUID = CFUUIDCreate(NULL); CFStringRef string = CFUUIDCreateString(NULL, theUUID); CFRelease(theUUID); return [NSString stringWithFormat:@"%@", string]; }
对于 Swift 5.0,用这个,
let uuidRef = CFUUIDCreate(nil) let uuidStringRef = CFUUIDCreateString(nil, uuidRef) let uuid = uuidStringRef as String? ?? ""