iOS 版本号的比较

compare() 方法可以直接对版本进行比较
这个是错误的!!!

这是之前在网上搜到的使用方法以为是正确的,突然发现10.0与9.0比较得到的结果是错误的,仔细研究了一下,发现compare的比较方式是按位比较, 所以10.0与9.0的比较其实得到的结果是 1<9!!!

查找了一些其他方案,没有什么完美的解决方案,只能自己封装一个String的extension方法,思路很简单,以“.”分隔,得到数组,然后按每一个下标比较


public func versionCompare(_compareVersion:String) -> ComparisonResult {

        //将两个版本号以“.”拆分成数组

        let currentVersions = self.base.components(separatedBy:".")

        let compareVersions = compareVersion.components(separatedBy:".")

        //分别比较每一位的大小

        let count = (currentVersions.count< compareVersions.count) ? currentVersions.count: compareVersions.count

        for i in 0..<count

            if let current =Int(currentVersions[i]), let compare = Int(compareVersions[i]) {

                if current > compare {

                    return ComparisonResult.orderedDescending

                }else if current < compare {

                    return ComparisonResult.orderedAscending

                }

            }

        }

        //经过上面的for后还没有比较出来,说明两者相同位的版本号都相同,剩下的则看谁的版本号更长,长的则表示版本号大。例:11.0.1 < 11.0.1.1

        if currentVersions.count< compareVersions.count{

            return ComparisonResult.orderedAscending

        }else if currentVersions.count> compareVersions.count{

            return ComparisonResult.orderedDescending

        }else{

            return ComparisonResult.orderedSame

        }

    }

复制代码

ComparisonResult.orderedDescending 表示降序,即currentVersion > compareVersion

ComparisonResult.orderedAscending 表示升序,即currentVersion < compareVersion

ComparisonResult.orderedSame 表示相等,即currentVersion = compareVersion

转载于:https://juejin.im/post/5b068c9a6fb9a07aa213c1f7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值