Как создать GUID / UUID с помощью iOS - PullRequest
205 голосов
/ 09 января 2009

Я хочу иметь возможность создавать GUID / UUID на iPhone и iPad.

Цель состоит в том, чтобы иметь возможность создавать ключи для распределенных данных, которые являются уникальными. Есть ли способ сделать это с помощью iOS SDK?

Ответы [ 8 ]

316 голосов
/ 09 января 2009
[[UIDevice currentDevice] uniqueIdentifier]

Возвращает уникальный идентификатор вашего iPhone.

РЕДАКТИРОВАТЬ: -[UIDevice uniqueIdentifier] теперь устарела и приложения отклоняются из App Store для его использования. Метод, представленный ниже, теперь является предпочтительным подходом.

Если вам нужно создать несколько UUID, просто используйте этот метод (с ARC):

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

РЕДАКТИРОВАТЬ: 29 января 2014 г .: Если вы ориентируетесь на iOS 6 или более позднюю версию, теперь вы можете использовать гораздо более простой метод:

NSString *UUID = [[NSUUID UUID] UUIDString];
100 голосов
/ 23 мая 2012

Вот простой код, который я использую, совместимый с ARC.

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

    return uuidString;
}
86 голосов
/ 23 марта 2013

В iOS 6 вы можете легко использовать:

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

Подробнее в Документация Apple

46 голосов
/ 09 января 2009

Просмотр документации Apple Developer Я обнаружил, что объект CFUUID доступен в iPhone OS 2.0 и более поздних версиях.

22 голосов
/ 01 декабря 2014

In Swift :

var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")
22 голосов
/ 04 марта 2009

Самым простым способом является использование NSString *uuid = [[NSProcessInfo processInfo] globallyUniqueString]. См. Справочник класса NSProcessInfo .

15 голосов
/ 01 ноября 2016

В Swift 3.0

var uuid = UUID().uuidString
7 голосов
/ 02 апреля 2012

Я загрузил свою простую, но быструю реализацию класса Guid для ObjC здесь: obj-c GUID

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

Он также может анализировать различные строковые форматы.

...