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 *'
Ответы
Ответ 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);