1. 程式人生 > >iOS 比較版本號大小的方法

iOS 比較版本號大小的方法

sar ++ 服務器 數字 span -- 兼容 mar line

比較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;

}

iOS 比較版本號大小的方法