80

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

4

7 回答 7

175

尝试:

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 实例。

于 2013-01-16T06:21:23.617 回答
10

Raptor 的Swift 版本的回答:

let uuid = NSUUID().UUIDString
于 2015-10-08T23:29:35.833 回答
6
+ (NSString *)uniqueFileName
{
    CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
    CFRelease(theUniqueString);
    return [(NSString *)string autorelease];
}
于 2013-01-16T06:21:39.513 回答
3
-(NSString*) myUUID()
{
    CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault);
    CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
    NSString *guid = (__bridge NSString *)newUniqueIDString;
    CFRelease(newUniqueIDString);
    CFRelease(newUniqueID);
    return([guid lowercaseString]);
}
于 2013-01-16T06:30:51.427 回答
1

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

于 2013-08-06T19:19:06.077 回答
0
- (NSString*)generateGUID{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [NSString stringWithFormat:@"%@", string];
}
于 2017-01-30T13:56:53.213 回答
-2

对于 Swift 5.0,使用这个,

    let uuidRef = CFUUIDCreate(nil)
    let uuidStringRef = CFUUIDCreateString(nil, uuidRef)
    let uuid = uuidStringRef as String? ?? ""
于 2020-05-11T10:55:31.693 回答