像在Java中一样,如何在目标c中获取UUID UUID用于生成表示128位值的唯一随机数。
像在Java中一样,如何在目标c中获取UUID UUID用于生成表示128位值的唯一随机数。
Answers:
尝试:
CFUUIDRef udid = CFUUIDCreate(NULL);
NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid);
更新:
从iOS 6开始,有一种更简单的方法来生成UUID。和往常一样,有多种方法可以做到这一点:
创建一个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是);使用isEqual:比较两个NSUUID实例。
CFUUIDRef udid
可能应该CFUUIDRef uuid
避免UDID(唯一设备标识符)与UUID(通用唯一标识符)之间的潜在混淆
+ (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]);
}
您可以将CFUUID用于iOS 5或更低版本,以及将NSUUID用于iOS 6和7。为了使其更加安全,您可以将UUID存储在钥匙串中
- (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? ?? ""