实际应用中,经常会用到当前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"]);