如何在ios中生成UUID

时间:2013-01-16 06:19:14

标签: ios objective-c

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

8 个答案:

答案 0 :(得分:162)

尝试:

CFUUIDRef udid = CFUUIDCreate(NULL);
NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid);

<强>更新

从iOS 6开始,there is an easier way to generate UUID。和往常一样,有多种方法可以做到:

创建UUID字符串:

NSString *uuid = [[NSUUID UUID] UUIDString];

创建UUID:

[[NSUUID UUID]; // which is same as..
[[NSUUID] alloc] init]; 

创建NSConcreteUUID类型的对象,可以轻松地投放到NSString,如下所示:BE5BA3D0-971C-4418-9ECF-E2D1ABCB66BE

来自文档的说明:

  

注意: NSUUID类与CoreFoundation的CFUUIDRef没有免费桥接。如果需要,使用UUID字符串在CFUUID和NSUUID之间进行转换。两个NSUUID对象不能保证与指针值相当(如CFUUIDRef所示); use isEqual:比较两个NSUUID实例。

答案 1 :(得分:7)

Raptor's answer的快速版本:

let uuid = NSUUID().UUIDString

答案 2 :(得分:6)

+ (NSString *)uniqueFileName
{
    CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
    CFRelease(theUniqueString);
    return [(NSString *)string autorelease];
}

答案 3 :(得分:3)

-(NSString*) myUUID()
{
    CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault);
    CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
    NSString *guid = (__bridge NSString *)newUniqueIDString;
    CFRelease(newUniqueIDString);
    CFRelease(newUniqueID);
    return([guid lowercaseString]);
}

答案 4 :(得分:2)

我建议您查看此库:https://github.com/fabiocaccamo/FCUUID

它提供了非常简单的API,可以获得具有不同持久性级别的通用唯一标识符。

兼容:iOS5,iOS6,iOS7,iOS8

答案 5 :(得分:1)

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

答案 6 :(得分:0)

- (NSString*)generateGUID{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [NSString stringWithFormat:@"%@", string];
}

答案 7 :(得分:-1)

对于Swift 5.0,请使用它

    let uuidRef = CFUUIDCreate(nil)
    let uuidStringRef = CFUUIDCreateString(nil, uuidRef)
    let uuid = uuidStringRef as String? ?? ""