如何在iOS中使用代码进行版本比对
项目中经常会遇到各种版本检测,目前想到两个方法进行版本比对,欢迎提出更多优化的方法
方法一:根据.进行比对
先比对.最左侧,然后按次序往后,代码如下
+ (NSComparisonResult)copmareVersonWithBase:(NSString*)baseversion compareVersion:(NSString*)compareVersion {
//将两个版本号以“.”拆分成数组
NSArray*currentVersions = [baseversioncomponentsSeparatedByString:@"."];
NSArray* compareVersions = [compareVersioncomponentsSeparatedByString:@"."];
//分别比较每一位的大小
NSIntegercount = (currentVersions.count< compareVersions.count)?currentVersions.count:compareVersions.count;
for(inti=0; i
NSIntegercurrent = (int)currentVersions[i];
NSIntegercompare = (int)compareVersions[i];
if(current>compare) {
return NSOrderedDescending;
}elseif(current
return NSOrderedAscending;
}
}
//经过上面的for后还没有比较出来,说明两者相同位的版本号都相同,剩下的则看谁的版本号更长,长的则表示版本号大。例:11.0.1 < 11.0.1.1
if(currentVersions.count< compareVersions.count){
return NSOrderedAscending;//升序(说明当前版本较低)
}elseif(currentVersions.count> compareVersions.count){
return NSOrderedDescending;//降序(说明当前版本较高)
}else{
return NSOrderedSame;
}
}
方法二:直接使用[compare:option:]方法
+ (NSComparisonResult)copmareVersonWithBase:(NSString*)baseversion compareVersion:(NSString*)compareVersion {
NSComparisonResult result =[currentVersion compare:lastVersion options:NSNumericSearch];
/*NSOrderedAscending; //升序(说明当前版本较低)
NSOrderedDescending;//降序(说明当前版本较高)
NSOrderedSame;//保持不变*/
return result;
}
网友评论