gpt4 book ai didi

objective-c - 如何获取 Mac 操作系统的实际名称而不是版本?

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:56 26 4
gpt4 key购买 nike

我可以使用下面给出的代码获取 OSX 的版本,但是我想要的是操作系统的名称(使用 Objective C)。

提前致谢!!!

NSOperatingSystemVersion version = [[NSProcessInfo processInfo] operatingSystemVersion];

NSString* major = [NSString stringWithFormat:@"%d", version.majorVersion];


NSString* minor = [NSString stringWithFormat:@"%d", version.minorVersion];


NSString* patch = [NSString stringWithFormat:@"%d", version.patchVersion];

最佳答案

据我所知,没有任何 API 可以生成当前操作系统版本的产品名称。即使 grepping 系统位置中的产品名称也会产生出乎意料的少的结果,而且大多数结果都在私有(private)框架中。我发现的唯一有前途的非私有(private)匹配是在 Setup Assistant.app 中,并且需要一个可怕的 kludge 来从更长的字符串中提取:

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:@"/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/Localizable.strings"];
NSString *productName = [dict objectForKey:@"INSTALLATION_COMPLETE"];
if (productName) {
NSRange r = [productName rangeOfString:@" has been"];
if (r.location != NSNotFound) {
productName = [productName substringToIndex:r.location];
} else {
productName = nil;
}
}

这恰好适用于 Yosemite 和 El Capitan,并生成“OS X Yosemite”和“OS X El Capitan”。但是,即使有这两个版本,kludgey 的性质也会暴露出来; El Capitan 字符串包含不可破坏的空格……

除此之外(或使用不打算以这种方式使用的其他文件的类似拼凑),当然可以获取数字版本并将其与已知产品名称列表进行匹配,这可能是我推荐的解决方案,也许以上述kludge作为后备。

关于objective-c - 如何获取 Mac 操作系统的实际名称而不是版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31657289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com