Как создать GUID / UUID с помощью iPhone SDK


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

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

8 194

8 ответов:

[[UIDevice currentDevice] uniqueIdentifier]

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

EDIT:-[UIDevice uniqueIdentifier] Теперь устарел и приложения отклоняются из магазина приложений для его использования. Метод, приведенный ниже, теперь является предпочтительным подходом.

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

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

EDIT: Jan, 29 2014: Если вы нацелены на iOS 6 или более позднюю версию, теперь вы можете использовать гораздо более простой метод:

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

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

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

    return uuidString;
}

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

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

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

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

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

In Свифт:

var uuid: String = NSUUID().UUIDString
println("uuid: \(uuid)")

In Swift 3.0

var uuid = UUID().uuidString

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

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

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