获取我的Mac的计算机名称

我怎样才能在Mac上获得电脑的名字? 我正在谈论与“软件”下的System Profiler中的名称相同的名称。

目标C

我正在寻找的名字是:

[[NSHost currentHost] localizedName]; 

它返回“乔纳森的MacBook”,而不是“乔纳森-Macbook”,或“jonathans-macbook.local”这只是name返回。

Swift 3

对于Swift> = 3使用。

 if let deviceName = Host.current().localizedName { print(deviceName) } 

NSHost就是你想要的:

 NSHost *host; host = [NSHost currentHost]; [host name]; 

我使用sysctlbyname(“kern.hostname”),它不会阻止。 请注意,我的帮助器方法应该只用于检索string属性,而不是整数。

 #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]; } 

使用必须添加到项目中的SystemConfiguration.framework

 #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]; 

这是一个不阻止:

 NSString* name = [(NSString*)CSCopyMachineName() autorelease];