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