在 Swift 4 中的 systemDouble 值中查找 nil
Posted
技术标签:
【中文标题】在 Swift 4 中的 systemDouble 值中查找 nil【英文标题】:Finding nil in systemDouble value in Swift 4 【发布时间】:2018-03-16 19:53:06 【问题描述】:我正在尝试在 Swift 4 中查找当前系统版本,我有一个标签,我将设置为“更新”或“未更新”,具体取决于当前 ios 版本是 >= 11.2 还是
这在模拟器中工作得很好,但是当我在我的 iPhone X 上运行它时,它返回一个错误说:“线程 1:致命错误:在展开可选值时意外发现 nil”,说明 systemDouble 等于零。
我试过说 if systemDouble != nil 和 if systemDouble == nil,但似乎没有任何效果。
任何帮助将不胜感激,谢谢
代码如下:
@IBOutlet weak var updateStatus: UILabel!
let systemVersion = UIDevice.current.systemVersion
let systemDouble = Double(systemVersion)
if (updateStatus != nil && systemDouble! >= 11.2)
updateStatus.text! = "Updated"
updateStatus.textColor = UIColor.green
else if (updateStatus != nil && systemDouble! < 11.2)
updateStatus.text! = "Not Updated" + String (systemVersion)
updateStatus.textColor = UIColor.red
【问题讨论】:
UIDevice.current.systemVersion
返回String
。如果操作系统类似于"10.0.1"
,它将返回nil
我建议改用ProcessInfo().operatingSystemVersion.majorVersion
。也可以查看minorVersion
和patchVersion
@LeoDabus 工作就像一个魅力!由于某种原因,minorVersion 和 patchVersion 似乎分别返回 2.0 和 6.0,但 majorVersion 返回 11,这是我需要的,谢谢。
【参考方案1】:
systemVersion
是一个字符串,不保证可以转换为数字。所以当你强行打开它时,你会得到一个错误。
我建议改用if #available(iOS 11.2, *)
。
【讨论】:
以上是关于在 Swift 4 中的 systemDouble 值中查找 nil的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS Swift 中,在 Swift 4 中的 TableView 中为 CollectionView 集成不同的数组