2017-10-13 2 views
0

J'ai trouvé l'exemple d'Apple sur la façon d'obtenir l'adresse MAC d'un ordinateur, mais il semble le retourner dans un tableau d'octets (ou quelque chose comme ça).Obtenez NSString de MacAddress sur OS X

Pour mon application, j'en ai besoin dans un NSString (comme "00: 00: 00: 00: 00"). Je suis assez nouveau à ce sujet, et mes tentatives pour convertir le CFData (je pense) que l'exemple de code semble revenir n'ont pas été couronnées de succès.

Je vois que dans l'exemple de code, il retournera kernResult. Si cela a l'adresse MAC, comment puis-je sortir de kernResult et dans un NSString?

+0

Cochez cette question sur (c'est pour iOS, mais il peut aider quand même): https://stackoverflow.com/questions/677530/how-can-i-programmatically -get-the-mac-adresse-d'un iphone – the4kman

+0

Merci. Je vais donner un coup de feu. J'ai vu que c'était pour iOS et je l'ai ignoré, car je ne savais pas que cela fonctionnerait aussi sur le Mac. – lightbord

Répondre

0

Se référant à GetPrimaryMACAddress il suffit d'écrire

NSString *macAddress = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x", 
     MACAddress[0], MACAddress[1], MACAddress[2], MACAddress[3], MACAddress[4], MACAddress[5]]; 
+0

J'ai changé la fonction principale de l'exemple 'int main (int argc, char * argv [])' à 'NSString * getmac()'. Ensuite, au lieu de retourner 'kernResult', je l'ai retourné' macAddress' 'NSString'. Ensuite, là où j'ai besoin de la chaîne en Obj-C, j'appelle 'getmac()'. Cela semble fonctionner. Cependant, est-ce sûr (aka pas une mauvaise pratique de programmation)? Quel sera le résultat si l'exemple de code est incapable de récupérer l'adresse MAC? – lightbord

+0

Oui, vous pouvez le faire. En cas d'erreur, renvoyez le message d'erreur. Mais n'oubliez pas de libérer l'itérateur. – vadian

+0

l'itérateur n'est-il pas libéré dans l'exemple de code (avec '(void) IOObjectRelease (intfIterator);')? J'ai juste copié l'exemple de code en haut de mon AppDelegate et fait les changements que j'ai mentionnés. – lightbord