Swift3 获取版本号,比较版本大小
Swift获取应用版本号:version
1、获取本地版本号
/// 获取本地版本号
func getLocalVersion() -> String {
var localVersion:String = ""
//当前版本
if let v:String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String{
localVersion = v
} return localVersion
}
如果想获取build号:替换key 为“CFBundleVersion”即可。
2、比较两个版本大小:
这里有个误区,可能有些人觉得直接比较就可以了,其实这样是错误的,比如:
v1.1.10 和 v1.1.2 ,直接比较后者>前者,但实际上【1.1.2 < 1.1.10】。
所以下面的比较原理,其实是分割比较:
参考代码:
/// 比较版本大小,返回是否需要更新
///
/// - Parameters:
/// - v1: 版本1- 新版本
/// - v2: 版本2- 当前版本
/// - Returns: true:v1>v2 false:v1<=v2
func compareVersions(v1:String,v2:String) -> Bool {
if v1.isEmpty && v2.isEmpty || v1.isEmpty{
return false
} if v2.isEmpty {
return true
} let arry1 = v1.components(separatedBy: ".")
let arry2 = v2.components(separatedBy: ".")
//取count少的
let minCount = arry1.count > arry2.count ? arry2.count : arry1.count var value1:Int =
var value2:Int = for i in ..<minCount {
if !isPurnInt(string: arry1[i]) || !isPurnInt(string: arry2[i]){
return false
} value1 = Int(arry1[i])!
value2 = Int(arry2[i])! // v1版本字段大于v2版本字段
if value1 > value2 {
// v1版本字段大于v2版本字段
return true
}else if value1 < value2{
// v1版本字段小于v2版本字段
return false
}
// v1版本=v2版本字段 继续循环 } //字段多的版本高于字段少的版本
if arry1.count > arry2.count {
return true
}else if arry1.count <= arry2.count {
return false
} return false
} /// 判断是否是数字
///
/// - Parameter string: <#string description#>
/// - Returns: <#return value description#>
func isPurnInt(string: String) -> Bool {
let scan: Scanner = Scanner(string: string)
var val:Int =
return scan.scanInt(&val) && scan.isAtEnd
}
Swift3 获取版本号,比较版本大小的更多相关文章
- iOS 获取版本号(Swift和OC两种)
iOS获取应用版本号:version OC: [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVers ...
- apk比较版本大小
Java String.compareTo(), 此方法如果这个字符串是等参数字符串那么返回值0,如果这个字符串是按字典顺序小于字符串参数那么返回小于0的值, 如果此字符串是按字典顺序大于字符串参数 ...
- Android 用versionName判断版本大小(是否进行版本更新)
一般情况下都是用versionCode进行版本大小的判断从而进行判断是否进行app的更新,但是有可能从网站上爬下来的versionCode不准确,有的网站叫做build,所以用versionName进 ...
- 获取机器安装.NET版本的几种方式
当调查应用程序问题时,通常需要先确认目标机器所安装的 .NET Framework 的版本.可以通过如下方式来确认版本号: 通过控制面板安装程序查询 通过查询注册表获取版本信息 通过查看安装目录获取版 ...
- ANDROID版本号和版本名称的重要性介绍
当我们在刚开始学习ANDROID的时候,可能不会过多的关注这个位于manifest.xml文件中的versionCode和versionName. 但是其实一个好的版本控制,对于我们有至关重要的作用. ...
- c# 获取系统版本,获取net framework 版本(Environment 类)
1.获取当前操作系统版本信息 使用Environment.OSVersion 属性 获取包含当前平台标识符和版本号的 OperatingSystem 对象. 命名空间: System程序集: ms ...
- Android 获取版本号名称工具类
package com.example.grenaderose.redthunder.utils; import android.content.Context; import android.con ...
- 使用JavaScript获取浏览器Chrome版本信息
Navigator对象包含了有关浏览器的信息 可通过访问其属性appVersion或userAgent来获取浏览器Chrome版本 例如,我所使用的QQ浏览器的appVersion和userAgent ...
- Android开发——获取应用数据/缓存大小并清理缓存
1. 获取应用数据/缓存大小 其中pm为实例化的PackageManager,因为需要遍历所有的已安装的应用.因此需要开启子线程进行处理. 还有需要注意的是,在Android4.2之前getPacka ...
随机推荐
- FFMpeg开发使用
1.jjmpeg下载 https://code.google.com/p/jjmpeg/downloads/list 2.ffmpeg文档地址 https://www.ffmpeg.org/ 3.安卓 ...
- JSP中解决中文乱码
<%@ page language="java" contentType="text/html;charset=gbk" pageEncoding=&qu ...
- Objective-C:NSMutableString类的常见操作
NSMutableString可变字符串的主要的操作是创建.增加.删除.插入.替换 代码操作如下: // // main.m // 03-NSMutableString // // Created b ...
- Linux进程调度的运行队列
当Linux内核要寻找一个新的进程在CPU上运行时,必须只考虑处于可运行状态的进程,(即在TASK_RUNNING状态的进程),因为扫描整个进程链表是相当低效的,所以引入了可运行状态进程的双向循环链表 ...
- iOS开发-UI基础Demo
现在更多的学习资料都是xCode4.X的,发现xCode6.1还是很多东西,如果有正在学习iOS开发的可以通过Demo简单了解下iOS的UI开发~ 1.新建单视图文件: 2.新建项目名称,语言选择OC ...
- Android GUI之View事件处理
Android中的事件分为按键事件和触屏事件,本篇文章将分析View是如何处理Touch事件的.在View中定义了许多触屏事件,比如OnClick.OnLongClick等等,这些事件都是由一次To ...
- Oracle数据库信息查询
查看当前数据库 select name from V$DATABASE; select SYS_CONTEXT('USERENV','INSTANCE_NAME') from dual; 用户 sel ...
- Jquery 获取table当前行内容
$("a[name='checkOriginal']").click(function () { var parent = $(this).parent().parent().fi ...
- 【Python】理想论坛帖子读取爬虫1.04版
1.01-1.03版本都有多线程争抢DB的问题,线程数一多问题就严重了. 这个版本把各线程要添加数据的SQL放到数组里,等最后一次性完成,这样就好些了.但乱码问题和未全部完成即退出现象还在,而且速度上 ...
- USACO humble
用set构造,优先队列和堆也能够 /* ID:kevin_s1 PROG:humble LANG:C++ */ #include <iostream> #include <cstdi ...