首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在OS X上获取型号标识符字符串

在OS X上获取型号标识符字符串
EN

Stack Overflow用户
提问于 2013-11-19 19:29:02
回答 3查看 2.4K关注 0票数 11

每个Mac都有一个型号标识符,例如"Macmini5,1“。(这些内容显示在系统信息应用程序中。)

如何通过编程获得此模型标识符字符串?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-19 21:30:36

您可以使用sysctl

#import <Foundation/Foundation.h>
#import <sys/sysctl.h>

NSString *ModelIdentifier()
{
    NSString *result=@"Unknown Mac";
    size_t len=0;
    sysctlbyname("hw.model", NULL, &len, NULL, 0);
    if (len) {
        NSMutableData *data=[NSMutableData dataWithLength:len];
        sysctlbyname("hw.model", [data mutableBytes], &len, NULL, 0);
        result=[NSString stringWithUTF8String:[data bytes]];
    }
    return result;
}
票数 7
EN

Stack Overflow用户

发布于 2019-06-05 03:28:49

Answer from Ryan H是正确的,除了从null-terminated stringSwift String的错误转换,最后给出的结果是\0符号,这可能是您不希望的,执行完全匹配。这是更正后的版本:

static private func modelIdentifier() -> String? {
    let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice"))
    defer { IOObjectRelease(service) }

    if let modelData = IORegistryEntryCreateCFProperty(service, "model" as CFString, kCFAllocatorDefault, 0).takeRetainedValue() as? Data {
        return modelData.withUnsafeBytes { (cString: UnsafePointer<UInt8>) -> String in
            return String(cString: cString)
        }
    }

    return nil
}
票数 5
EN

Stack Overflow用户

发布于 2015-05-26 10:44:44

CFStringRef model = IORegistryEntryCreateCFProperty(service, 
                                                        CFSTR("model"), 
                                                        kCFAllocatorDefault, 
                                                        0);  ? type is ok ?

我认为代码可能是这样的:

CFSDataRef model = IORegistryEntryCreateCFProperty(service, 
                                                        CFSTR("model"), 
                                                        kCFAllocatorDefault, 
                                                        0);  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20070333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档