Как сгенерировать UUID в ios

Как получить UUID в цели c, как в Java UUID используется для генерации уникальных случайных чисел, которые представляют 128-битное значение.

7 ответов

Решение

Пытаться:

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

ОБНОВИТЬ:

Начиная с iOS 6, существует более простой способ генерации 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 не является бесплатным для мостового соединения с CFUUIDRef в CoreFoundation. При необходимости используйте строки UUID для преобразования между CFUUID и NSUUID. Два объекта NSUUID не гарантируются быть сравнимыми по значению указателя (как CFUUIDRef); используйте isEqual: для сравнения двух экземпляров NSUUID.

Быстрая версия ответа Raptor:

let uuid = NSUUID().UUIDString
+ (NSString *)uniqueFileName
{
    CFUUIDRef theUniqueString = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUniqueString);
    CFRelease(theUniqueString);
    return [(NSString *)string autorelease];
}
-(NSString*) myUUID()
{
    CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault);
    CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID);
    NSString *guid = (__bridge NSString *)newUniqueIDString;
    CFRelease(newUniqueIDString);
    CFRelease(newUniqueID);
    return([guid lowercaseString]);
}

Я предлагаю вам проверить эту библиотеку: https://github.com/fabiocaccamo/FCUUID

Он предоставляет очень простой API для получения универсально уникальных идентификаторов с разными уровнями устойчивости.

Совместим с: iOS5, iOS6, iOS7, iOS8

Вы можете использовать CFUUID для iOS 5 или более поздней версии и NSUUID для iOS 6 и 7. Для большей безопасности вы можете хранить свой UUID в связке ключей

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

Для Swift 5.0 используйте это,

    let uuidRef = CFUUIDCreate(nil)
    let uuidStringRef = CFUUIDCreateString(nil, uuidRef)
    let uuid = uuidStringRef as String? ?? ""
Другие вопросы по тегам