Как сгенерировать 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.
+ (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? ?? ""