Генерация уникального идентификатора в Objective C - PullRequest
1 голос
/ 11 января 2012

Как мы получаем уникальные идентификаторы в Задаче C. Я хочу создать уникальный идентификатор для своего сеанса, а затем генерировать идентификатор каждый раз, когда происходит вызов сервера.Каждый раз этот идентификатор должен быть уникальным.

Я пытался использовать класс CFUUID, который дает нам огромный уникальный идентификатор (4FE9D00C-531E-45E8-B10E-11968ACC36E9).Я хочу уникальный идентификатор меньшего размера.

Любая подсказка?

Ответы [ 3 ]

6 голосов
/ 11 января 2012

Гид (по комбинациям сдвига) генерирует уникальный идентификатор.Если вам нужно меньше символов, тогда одним из вариантов является кодирование guid base64.Это позволяет использовать 64 варианта на символ вместо 16 (0-9, AF)

Это:

540c2d5f-a9ab-4414-bd36-9999f5388773

Становится:

Xy0MVKupFES9NpmZ9TiHcw

Например: (C #хотя) http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx

Вот SO пост о кодировании / декодировании target-c (смотрите сообщение Mike Ho):

Как сделать кодирование base64 на iphone-sdk

0 голосов
/ 07 июня 2017

Вы можете попробовать один из следующих

1

CFUUIDRef udidCFUUIDRef = CFUUIDCreate(NULL);
    NSString *UUIDString_token_name = (NSString *) CFBridgingRelease(CFUUIDCreateString(NULL, udidCFUUIDRef));

2-

NSString *UUIDString = [[NSUUID UUID] UUIDString];
0 голосов
/ 01 мая 2016

Это тоже был мой вопрос, и мне понравился ответ, но я хотел бы привести здесь код, и я знаю, что он старый, но, возможно, он может кому-то помочь:

// DataWithLength is a byte size of UUID. So 32 bytes = 256 bits string
- (NSString*)generateSecureUUID {

    NSMutableData *data = [NSMutableData dataWithLength:32];

    int result = SecRandomCopyBytes(NULL, 32, data.mutableBytes);

    NSAssert(result == 0, @"Error generating random bytes: %d", errno);

    NSString *base64EncodedData = [data base64EncodedStringWithOptions:0];

    return base64EncodedData;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...