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;
}
iOS 比較版本號大小的方法