實際應用中菠劝,經常會用到當前APP的版本號跟商店的版本號進行比較,以此來判斷手機APP是否進行更新着逐。
以下提供了兩個版本號比較的方法:
/**
版本號比較
@param version1 版本號1
@param version2 版本號2
@return 【0:版本號1 = 版本號2】赏廓,【1:版本號1 > 版本號2】格遭,【-1:版本號1 < 版本號2】
*/
+ (int)compareWithVersion1:(NSString *)version1 version2:(NSString *)version2 {
// 獲取各個版本號對應版本信息
NSMutableArray *verArr1 = [NSMutableArray arrayWithArray:[version1 componentsSeparatedByString:@"."]];
NSMutableArray *verArr2 = [NSMutableArray arrayWithArray:[version2 componentsSeparatedByString:@"."]];
// 補全版本信息為相同位數
while (verArr1.count < verArr2.count) {
[verArr1 addObject:@"0"];
}
while (verArr2.count < verArr1.count) {
[verArr2 addObject:@"0"];
}
// 遍歷每一個版本信息中的位數
// 記錄比較結果值
int result = 0;
for (int i = 0; i < verArr1.count; i++) {
NSInteger versionNumber1 = [verArr1[i] integerValue];
NSInteger versionNumber2 = [verArr2[i] integerValue];
if (versionNumber1 < versionNumber2) {
result = -1;
break;
}
else if (versionNumber2 < versionNumber1){
result = 1;
break;
}
}
return result;
}
以下是測試用例:
NSLog(@"2.4.6 → 2.4.7 %d",[ViewController compareWithVersion1:@"2.4.6" version2:@"2.4.7"]);
NSLog(@"2.4.6 → 2.3.7 %d",[ViewController compareWithVersion1:@"2.4.6" version2:@"2.3.7"]);
NSLog(@"1.4.6 → 2.3 %d",[ViewController compareWithVersion1:@"1.4.6" version2:@"2.3"]);
NSLog(@"1.4.6 → 1.4.6 %d",[ViewController compareWithVersion1:@"1.4.6" version2:@"1.4.6"]);
NSLog(@"1.4.6 → 1.14.6 %d",[ViewController compareWithVersion1:@"1.4.6" version2:@"1.14.6"]);
NSLog(@"2.4.6 → 1.14.6 %d",[ViewController compareWithVersion1:@"2.4.6" version2:@"1.14.6"]);