当前位置: 首页 > 面试题库 >

在Swift中检查OS版本?

邹晟睿
2023-03-14
问题内容

我正在尝试在Swift中检查系统信息。我发现,可以通过代码实现:

var sysData:CMutablePointer<utsname> = nil
let retVal:CInt = uname(sysData)

这段代码有两个问题:

  1. sysData的初始值应该是多少?此示例在retVal中给出-1,可能是因为sysData为nil。
  2. 如何从sysData中读取信息?

问题答案:

对于iOS,请尝试:

var systemVersion = UIDevice.current.systemVersion

对于OS X,请尝试:

var systemVersion = NSProcessInfo.processInfo().operatingSystemVersion

如果您只想检查用户是否正在运行至少特定版本,则还可以使用以下可在iOS和OS X上运行的Swift 2功能:

if #available(iOS 9.0, *) {
    // use the feature only available in iOS 9
    // for ex. UIStackView
} else {
    // or use some work around
}

但是不建议检查操作系统版本。 与比较版本号相比,最好检查设备上是否要使用要使用的功能。 对于iOS,如上所述,您应该检查它是否响应选择器;例如。:

if (self.respondsToSelector(Selector("showViewController"))) {
    self.showViewController(vc, sender: self)
} else {
    // some work around
}


 类似资料:
  • 问题内容: 在目标C中,可以执行以下操作来检查字符串: 如何在Swift中检测空字符串? 问题答案: 现在具有使用以下命令检测空字符串的内置功能: Apple发行前文档:“字符串和字符”。

  • Oracle DB中有一个Java类,最近该Java类中的一行代码抛出了一个错误: 我们看到了错误 java.lang.ExceptionInInitializerError

  • 我对Android并不陌生,我很习惯于版本处理和如何调整它,但当我看到这一点时,我很困扰。。。 在Lollipop前的任何设备上,这一行都会导致应用程序崩溃,因为构建失败。版本代码。Lollipop字段不存在。。。那么,为什么在文档中推荐的解决方案中会出现这种情况呢? 我真的想知道我错过了什么?

  • 你能帮我解决这个问题吗?我在Stack上找到了类似的问题,但找不到答案。

  • 问题内容: 我正在尝试检查是否存在用户默认值,如下所示: 但是,无论对象还不存在,它将始终返回true是什么?这是检查存在的正确方法吗? 问题答案: 阿斯通有一个很好的答案。请参阅下面的Swift 3版本。

  • 可能重复: 以编程方式检索Android API版本 我需要如果运行应用程序api级别的手机是14,这是android 4.0或更高(示例api levcel 15),那么启动活动...或者如果api级别低于14(示例13),那么启动活动... 怎么了?