如何在 IOS 中生成 UUID

如何在目标 c 中获得 UUID,就像在 JavaUUID 中一样,用于生成表示128位值的唯一随机数。

83967 次浏览

试试:

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

文件注释:

注意: 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? ?? ""