web-dev-qa-db-fra.com

NSUUID à NSString

J'ai besoin d'obtenir deviceUUID à partir d'un téléphone au format NSString. Maintenant, j'ai ceci:

NSString *deviceId = [UIDevice currentDevice].identifierForVendor;

Parce que ce que j'avais avant, c'était:

NSString *deviceId = [UIDevice currentDevice].uniqueIdentifier;

Me donne maintenant une erreur.

Mais avec la première phrase, j'ai reçu une alerte:

Incompatible pointer types initializing 'NSString *' with an expression of type 'NSUUID *'
20
Biribu

Comme l'erreur vous l'indique, identifierForVendor renvoie un objet de classe NSUUID , pas une chaîne NSS.

Si vous avez besoin d'une NSString, utilisez ceci:

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

Pour tous ceux qui recherchent comment convertir NSUUID en NSString

ObjC

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

Swift

NSUUID().UUIDString

Swift 3

UUID().uuidString
24
onmyway133

EDITE: Comme ( OP condition Je rouvre ma réponse supprimée et je mentionne ici @ Matthias's la réponse est correcte et en utilisant le code suivant, vous obtenez un nouveau device_id à chaque fois que vous exécutez ce code.

Utilisez le code suivant:

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