如何比较版本号

以iOS系统的版本号来举例说明

错误示范:

一、floatValue的问题

[UIDevice currentDevice].systemVersion.floatValue > 10.3

首先,NSString转float类型时,精度会丢失。
其次,如果要和10.3.1比较时,10.3.1不是float类型,无法比较,只能和两段式的版本号比较。

二、compare的问题

[[UIDevice currentDevice].systemVersion compare:@"9.0"] != NSOrderedAscending

上面的代码,在iOS 10之前的机器上是没毛病的。
iOS 10的机器上,上面的代码判断会失效。
原因是compare:方法会先比较第一位,如果你设备版本号是10.3.1,那么第一位是1,用它和9比较。而不是你想象中的用10和9比较。

正确示范:

使用compare: options:方法

[[UIDevice currentDevice].systemVersion compare:@"9.0" options:NSNumericSearch] != NSOrderedAscending

options:设置为NSNumericSearch就解决了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,566评论 7 249
  • 升级iOS10以后,遇到了很多新的的问题。经过一段时间的适配,暴露的问题基本都已经解决。这里把这些问题作一个统一的...
    kmplayer阅读 1,545评论 0 11
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • 累吗?对于我这个已是不惑之年的人来说,累是肯定的。再也不能和青春年少时的我相提并论了。 那时的我动力...
    蒹葭essay阅读 278评论 0 0
  • 芙蕖又名:莲花、荷花、水芝、水华、水芙、水旦、菡萏、水芙蓉、泽芝、玉环、六月春、中国莲等。 名称好多,但是不管它叫...
    melody李小婷阅读 1,864评论 21 112