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

这样做的目的是能够为所有唯一的分布式数据创建键。iOS SDK有办法做到这一点吗?


当前回答

[[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];

其他回答

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

[[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];

在Swift 3.0中

var uuid = UUID().uuidString

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

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

更多细节在苹果文档中

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

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

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