Подтвердить что ты не робот

NSUUID для NSString

Мне нужно получить deviceUUID с телефона в формате NSString. Теперь у меня есть это:

NSString *deviceId = [UIDevice currentDevice].identifierForVendor;

Потому что раньше у меня было:

NSString *deviceId = [UIDevice currentDevice].uniqueIdentifier;

Дает мне ошибку.

Но с первым предложением я получил предупреждение:

Incompatible pointer types initializing 'NSString *' with an expression of type 'NSUUID *'
4b9b3361

Ответ 1

Как сообщает ошибка, identifierForVendor возвращает объект класса NSUUID, а не NSString.

Если вам нужна NSString, используйте это:

NSUUID *identifierForVendor = [[UIDevice currentDevice] identifierForVendor];
NSString *deviceId = [identifierForVendor UUIDString];

Ответ 2

Для всех, кто ищет способ преобразования NSUUID в NSString

ObjC

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

Свифта

NSUUID().UUIDString

Swift 3

UUID().uuidString

Ответ 3

EDITE: В качестве требования OP я снова открываю свой удаленный ответ, и я упоминаю здесь ответ @Маттиас, и с помощью следующего кода вы получаете новый device_id каждый раз при запуске этого кода.

Используйте следующий код:

CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
NSString *uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(NULL,uuidRef));
CFRelease(uuidRef);
NSLog(@"%@", uuidString);