zoukankan      html  css  js  c++  java
  • iOS 比较版本号大小的方法

    比较iOS版本号大小 eg:3.2.0和3.1.0 或者 3.2.0和3.2比较
    返回bool值变量YES or NO

    在APP迭代更新过程中,有这样的需求,需要比较版本号的大小,然后弹出提示框提示更新.

    之前版本号一直是中规中矩的按照1.1.0 --> 1.1.2这种数字变化方式.采用的方法是:将版本号字符串中的.号删除掉之后,比较两个数字的大小,后来发现在App Store中,各种APP的版本号数字变化的格式千奇百怪,1.0.11-->1.1.0,如果还采用上面的方法比较版本号,就不对了1011(本地version)肯定是大于110(线上版本),而实际上1.1.0是1.0.11的下一个版本.

    解决方法:

    版本号是分成三个模块来命名的,所以比较大小还是将三个部分剖开来比较大小兼容性强一些,万一遇到版本号命名没有按照规定的格式来,到时候大小就判断错了.

    思路是这样的:三个部分,从第一个部分开始比较大小,优先级:第一部分>第二部分>第三部分,一旦分出大小就代表比较结束了,只要前面一部分大,无论后面一部分怎么小都没关系.

    -(BOOL)compareVesionWithServerVersion:(NSString *)version{
    
        NSArray *versionArray = [version componentsSeparatedByString:@"."];//服务器返回版
    
        NSArray *currentVesionArray = [APP_VERSION componentsSeparatedByString:@"."];//当前版本
    
        NSInteger a = (versionArray.count> currentVesionArray.count)?currentVesionArray.count : versionArray.count;
    for (int i = 0; i< a; i++) { NSInteger a = [[versionArray safeObjectAtIndex:i] integerValue]; NSInteger b = [[currentVesionArray safeObjectAtIndex:i] integerValue]; if (a > b) { NSLog(@"有新版本"); return YES; }else if(a < b){ return NO; } return NO; }

     

  • 相关阅读:
    Ninject Lazy Load问题
    log4net 极简配置
    log4net 使用指南,最常遇到的问题整理。。。
    【应聘】阿里巴巴Java面试题目
    【Unity3D】自动寻路(Nav Mesh Agent组件)
    【unity3D】鼠标控制camera的移动、放大(俯视浏览效果、LOL摄像机移动效果)
    【Unity3D】枪战游戏—弹孔设置
    【Unity3D】枪战游戏—发射子弹、射线检测
    【Unity3D】Unity自带组件—完成第一人称人物控制
    软件工程【第5章】- 需求工程与需求设计
  • 原文地址:https://www.cnblogs.com/edensyd/p/8416965.html
Copyright © 2011-2022 走看看