Come posso ottenere il nome del computer su un Mac? Sto parlando dello stesso nome di quello che puoi trovare in System Profiler sotto "Software".Ottieni il nome del computer del mio Mac
risposta
Objective C
Il nome che cercavo è:
[[NSHost currentHost] localizedName];
Esso restituisce "MacBook di Jonathan" piuttosto che " Jonathans-Macbook ", o" jonathans-macbook.local "che restituisce solo name
.
Swift 3
Per Swift> = 3 uso.
if let deviceName = Host.current().localizedName {
print(deviceName)
}
NSHost è ciò che si vuole qui:
NSHost *host;
host = [NSHost currentHost];
[host name];
Sarà il nome descrittivo dell'utente (includendo cose come spazi e apostrofi) o la versione più scomoda in cui gli spazi vengono sostituiti con e rimossi. –
Dal documento collegato: 'Può essere un semplice nome host, come @" vendite ", o un nome di dominio completo, come @" vendite.anycorp.com ".' –
No Voglio dire sarà" MacBook di Jonathan "o" Jonathans-Macbook "? –
Ecco uno che non blocca:
NSString* name = [(NSString*)CSCopyMachineName() autorelease];
Ora è deprecato. – Dev
Utilizzando la SystemConfiguration.framework, che è necessario aggiungere al progetto:
#include <SystemConfiguration/SystemConfiguration.h>
...
// Returns NULL/nil if no computer name set, or error occurred. OSX 10.1+
NSString *computerName = [(NSString *)SCDynamicStoreCopyComputerName(NULL, NULL) autorelease];
// Returns NULL/nil if no local hostname set, or error occurred. OSX 10.2+
NSString *localHostname = [(NSString *)SCDynamicStoreCopyLocalHostName(NULL) autorelease];
Nota Apple non consiglia l'uso di questo metodo quando si registra un servizio Bonjour. Maggiori informazioni nella [Domande e risposte tecniche QA1228] (http://developer.apple.com/library/mac/#qa/qa1228/_index.html). – Dev
Giusto per chiarire - il 'ComputerName' e' LocalHostName' sono distinti qui. Apple consiglia di non utilizzare LocalHostName poiché presenta limitazioni più rigide di quelle necessarie per i servizi Bonjour - e le API di registrazione automatica Bonjour utilizzano il ComputerName oltre a una certa magia di deduplicazione gratuitamente. – RJHunter
Io uso sysctlbyname (" kern.hostname "), che non blocca. Si prega di notare che il mio metodo di supporto dovrebbe essere usato solo per recuperare gli attributi di stringa, non interi.
#include <sys/sysctl.h>
- (NSString*) systemInfoString:(const char*)attributeName
{
size_t size;
sysctlbyname(attributeName, NULL, &size, NULL, 0); // Get the size of the data.
char* attributeValue = malloc(size);
int err = sysctlbyname(attributeName, attributeValue, &size, NULL, 0);
if (err != 0) {
NSLog(@"sysctlbyname(%s) failed: %s", attributeName, strerror(errno));
free(attributeValue);
return nil;
}
NSString* vs = [NSString stringWithUTF8String:attributeValue];
free(attributeValue);
return vs;
}
- (NSString*) hostName
{
NSArray* components = [[self systemInfoString:"kern.hostname"] componentsSeparatedByString:@"."];
return [components][0];
}
La migliore soluzione AFAIK, e non come 'SCDynamicStoreCopyLocalHostName', restituirà il suffisso" .local "necessario. –
- 1. C# Ottieni l'indirizzo MAC del computer "OFFLINE"
- 2. Ottieni il nome del computer server in ASP.NET MVC?
- 3. Ottieni il nome del metodo corrente
- 4. Codeigniter: ottieni il nome del file caricato
- 5. Ottieni il nome del proprietario del DB in PostgreSql
- 6. Ottieni il nome del processo tramite PID
- 7. Ottieni il nome del programma Java
- 8. Ottieni il nome del metodo corrente
- 9. Symfony2 Ottieni il nome del percorso dall'URL
- 10. Ottieni il nome del file da FileOutputStream
- 11. Ottieni il nome del campo primario del modello Django
- 12. Ottieni il nome del carattere del file .ttf
- 13. Ottieni il numero del mese dal nome del mese
- 14. Ottieni il nome del computer locale tramite la sessione Citrix in .NET
- 15. Ottieni il nome completo del computer da una lettera di unità di rete in python
- 16. Ottieni l'indirizzo MAC del sistema in Java
- 17. Come posso ottenere il nome di dominio completo del mio computer in Python?
- 18. modifica del nome del computer su un IIS 7
- 19. Ottenere il nome del computer Windows che esegue script Python?
- 20. Come faccio ad avere il nome del computer in .NET
- 21. Come posso ottenere il nome del computer locale in C#?
- 22. ID specifico del computer?
- 23. Perché il mio accesso dal mio cellulare alla rete del mio computer non funziona?
- 24. Ottieni il numero di porta per il nome del servizio?
- 25. Ottieni il nome del processo da pid o handle
- 26. Ottieni nome file dal puntatore del file
- 27. È possibile visualizzare il mio iPhone sul monitor del mio computer?
- 28. Ottieni gli elementi del modulo per nome?
- 29. Ottieni il valore del dropdown in VBA e ottieni il nome del menu a discesa ... in nessun posto?
- 30. Flex: ottieni il nome del file SWF automatico?
Si noti che [NSHost currentHost] esegue una ricerca di rete bloccante. Su una rete lenta o su un computer disconnesso, interromperà l'applicazione fino a quando la chiamata di rete scade, a meno che non la chiami su un thread in background. – starkos
Basta passare una stringa vuota al momento della registrazione del servizio e il tuo nome localizzato verrà automaticamente utilizzato, come raccomandato dalla mela –
C'è un modo per scrivere questo in Swift? – dylan