一尘不染

在Swift中检查OS版本?

swift

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

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

这段代码有两个问题:

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

阅读 278

收藏
2020-07-07

共1个答案

一尘不染

对于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
}
2020-07-07