您的位置:首页 > 移动开发

iOS APP版本更新比较版本号大小

2017-02-14 09:58 555 查看
需求来源:

在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的下一个版本.

解决方法:

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

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

 NSString *localVerson=[GlobalFuction
appVerson];//获取本地版本号

//将版本号按照.切割后存入数组中

    NSArray *localArray = [localVerson
componentsSeparatedByString:@"."];

    NSArray *appArray = [versonAPP
componentsSeparatedByString:@"."];

    NSInteger minArrayLength =
MIN(localArray.count, appArray.count);

    BOOL needUpdate =
NO;

    

    for(int i=0;i<minArrayLength;i++){//以最短的数组长度为遍历次数,防止数组越界

    

       
//取出每个部分的字符串值,比较数值大小

        NSString *localElement = localArray[i];

        NSString *appElement = appArray[i];

        

   

         NSInteger  localValue =  localElement.integerValue;

         

         

         NSInteger  appValue = appElement.integerValue;

        if(localValue<appValue) {

       
//从前往后比较数字大小,一旦分出大小,跳出循环

            needUpdate = YES;

            break;

        }else{

        

            needUpdate = NO;

        }

    

    }

    

    

    if (needUpdate) {

        

        

       //弹出提示更新弹框

        

        

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios app