211

我希望能够在 iPhone 和 iPad 上创建 GUID/UUID。

目的是能够为分布式数据创建唯一的密钥。有没有办法用 iOS SDK 做到这一点?

4

8 回答 8

324
[[UIDevice currentDevice] uniqueIdentifier]

返回 iPhone 的唯一 ID。

编辑:-[UIDevice uniqueIdentifier]现在已弃用,应用程序正在被 App Store 拒绝使用它。下面的方法现在是首选方法。

如果您需要创建多个 UUID,只需使用此方法(使用 ARC):

+ (NSString *)GetUUID
{
  CFUUIDRef theUUID = CFUUIDCreate(NULL);
  CFStringRef string = CFUUIDCreateString(NULL, theUUID);
  CFRelease(theUUID);
  return (__bridge NSString *)string;
}

编辑:2014 年 1 月 29 日:如果您的目标是 iOS 6 或更高版本,您现在可以使用更简单的方法:

NSString *UUID = [[NSUUID UUID] UUIDString];
于 2009-01-09T09:35:28.280 回答
100

这是我正在使用的简单代码,符合 ARC。

+(NSString *)getUUID
{
    CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
    NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
    CFRelease(newUniqueId);

    return uuidString;
}
于 2012-05-23T00:51:12.097 回答
93

在 iOS 6 中,您可以轻松使用:

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

Apple 文档中的更多详细信息

于 2013-03-23T05:19:40.003 回答
47

查看 Apple Developer 文档,我发现CFUUID对象可用于 iPhone OS 2.0 及更高版本。

于 2009-01-09T06:14:32.960 回答
23

斯威夫特

var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
于 2014-11-30T23:07:53.453 回答
22

最简单的技术是使用NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]. 请参阅NSProcessInfo类参考。

于 2009-03-03T21:48:33.003 回答
16

Swift 3.0中

var uuid = UUID().uuidString
于 2016-11-01T14:14:22.360 回答
7

我在这里为 ObjC 上传了一个简单但快速的 Guid 类实现:obj-c GUID

Guid* guid = [Guid randomGuid];
NSLog("%@", guid.description);

它也可以解析各种字符串格式。

于 2012-04-02T18:11:58.680 回答