iOS之版本号比较

本文介绍了一个Objective-C中用于比较两个版本号字符串的方法。该方法首先检查字符串是否为空,然后将版本号字符串分割为数组,通过比较每个部分的整数值来确定版本的高低。如果所有可比较字段相同,则字段更多的版本被视为更高。

.h文件

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NSString (CompareVersion)
+ (NSInteger)compareVersion:(NSString *)v1 to:(NSString *)v2 ;
@end

NS_ASSUME_NONNULL_END

.m文件

#import "NSString+CompareVersion.h"

@implementation NSString (CompareVersion)
+ (NSInteger)compareVersion:(NSString *)v1 to:(NSString *)v2 {
    // 都为空,相等,返回0
    if (!v1 && !v2) {
        return 0;
    }
    
    // v1为空,v2不为空,返回-1
    if (!v1 && v2) {
        return -1;
    }
    
    // v2为空,v1不为空,返回1
    if (v1 && !v2) {
        return 1;
    }
    
    // 获取版本号字段
    NSArray *v1Array = [v1 componentsSeparatedByString:@"."];
    NSArray *v2Array = [v2 componentsSeparatedByString:@"."];
    // 取字段最少的,进行循环比较
    NSInteger smallCount = (v1Array.count > v2Array.count) ? v2Array.count : v1Array.count;
    
    for (int i = 0; i < smallCount; i++) {
        NSInteger value1 = [[v1Array objectAtIndex:i] integerValue];
        NSInteger value2 = [[v2Array objectAtIndex:i] integerValue];
        if (value1 > value2) {
            // v1版本字段大于v2版本字段,返回1
            return 1;
        } else if (value1 < value2) {
            // v2版本字段大于v1版本字段,返回-1
            return -1;
        }
        
        // 版本相等,继续循环。
    }
    
    // 版本可比较字段相等,则字段多的版本高于字段少的版本。
    if (v1Array.count > v2Array.count) {
        return 1;
    } else if (v1Array.count < v2Array.count) {
        return -1;
    } else {
        return 0;
    }
    
    return 0;
}
@end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值