美文网首页
iOS 本地版本和服务器版本比较

iOS 本地版本和服务器版本比较

作者: _Waiting_ | 来源:发表于2021-12-24 16:06 被阅读0次

本地版本和服务版本比较,纯数字比较

//
//  HanVersionJudge.h
//
//
//  Created by han on 2021/12/24.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef enum : NSUInteger {
    VersionError = -1,//版本异常
    VersionLower = 0,//比本地版本低
    VersionHigher,//比本地版本高
    VersionSame,//版本一致
} VersionState;

@interface HanVersionJudge : NSObject

/// 判断传入的版本和本地版本
/// 仅适用于x.xx.xxx纯数字版本号
/// @param version 版本号
+(VersionState)compareLocalVersionWith:(NSString *)version;
@end

NS_ASSUME_NONNULL_END

//
//  HanVersionJudge.m
//  HanTest4
//
//  Created by han on 2021/12/24.
//

#import "HanVersionJudge.h"

@implementation HanVersionJudge
+(VersionState)compareLocalVersionWith:(NSString *)version{
    NSString *localVersion = [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleShortVersionString"];
    NSArray *localVerArr = [localVersion componentsSeparatedByString:@"."];
    NSArray *verArr = [version componentsSeparatedByString:@"."];
    
    BOOL isNum1 = [self isNumber:localVersion];
    BOOL isNum2 = [self isNumber:version];
    
    if (isNum1 == NO || isNum2 == NO) {
        return VersionError;
    }
    
    if ([version isEqualToString:localVersion]) {
        return VersionSame;
    }
    
    if (verArr.count < localVerArr.count) {
        return VersionLower;
    }else if (verArr.count > localVerArr.count) {
        return VersionHigher;
    } else{
        for (int i = 0; i < localVerArr.count ; i++) {
            NSString *locVer = localVerArr[i];
            NSString *ver = verArr[i];
            if ([locVer integerValue] > [ver integerValue] ) {
                return VersionLower;
            }else if ([locVer integerValue] < [ver integerValue] ) {
                return VersionHigher;
            }
        }
    }
    
    return VersionLower;
}
+ (BOOL)isNumber:(NSString *)strValue
{
    if (strValue == nil || [strValue length] <= 0)
    {
        return NO;
    }
    
    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];
    NSString *filtered = [[strValue componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    
    if (![strValue isEqualToString:filtered])
    {
        return NO;
    }
    return YES;
}

@end

相关文章

  • iOS 本地版本和服务器版本比较

    本地版本和服务版本比较,纯数字比较

  • Cordova+Vue APP 安卓自动升级

    一、Android App升级执行流程 1、获取本地版本号 2、请求服务器获取服务器版本号 3、本地版本和服务器版...

  • SQL优化的一般步骤

    准备基础数据和服务器配置本地MySQL配置信息:我使用的是5.5.48,一个比较旧的版本了.2017-08-01 ...

  • flutter开发iOS Android web windows

    web版本地址 web版本地址 [https://www.huangjianguo.top:3389/] ios ...

  • iOS版本检测

    在iOS开发的时候,有时候遇到相关版本检测的需求。版本检测分为本地版本检测、线上版本检测。 1、本地版本检测 AP...

  • APP推送基础

    1、消息推送分为本地通知和服务器通知。 本地通知是指由APP本地发起,无需联网,如游戏定时任务、闹钟提醒、版本更新...

  • 关于‘View’has no propType for nati

    这个问题是你的react native的版本和服务器版本不一致导致的。 解决的办法: 查看自己工程的版本,和服务器...

  • ios 版本比较

  • iOS 版本比较

    更科学的版本比较:可以忽略长度问题、数值问题

  • 本地推送

    一、创建本地通知事例详解 首先本地推送分为iOS10之前的版本 和 之后的版本iOS之后的版本 有一些新的功能首先...

网友评论

      本文标题:iOS 本地版本和服务器版本比较

      本文链接:https://www.haomeiwen.com/subject/cmnlqrtx.html