iOS 获取版本号(Swift和OC两种)
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
}
iOS 获取版本号(Swift和OC两种)的更多相关文章
- 【Swfit】Swift与OC两种语法写单例的区别
Swift与OC两种语法写单例的区别 例如写一个NetworkTools的单例 (1)OC写单例 + (instancetype)sharedNetworkTools { static id inst ...
- java 获取键盘输入常用的两种方法
java 获取键盘输入常用的两种方法 方法1: 通过 Scanner Scanner input = new Scanner(System.in); String s = input.nextLine ...
- QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)
QT中获取选中的radioButton的两种方法 QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioBu ...
- Swift基础之两种选择星星的评价样式并获取星星的索引值
想练练手,所以封装了一个两种选择星星的评价样式的Demo,并且可以获取到点击的星星的索引值,方便记录值,上传数据时使用 首先创建View类,设计初始化方法,并且用到了枚举类型和代理方法 方式一:默认的 ...
- iOS获取设备唯一标识的8种方法
8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...
- 使用JavaScript获取URL中的参数(两种方法)
本文给大家分享两种方法使用js获取url中的参数,其中方法二是使用的正则表达式方法,大家可以根据需要选择比较好的方法,废话不多说了,直接看详细介绍吧. 方法一: //取url参数 var type = ...
- JS获取元素宽高的两种情况
JS获取元素宽高分两种情况, 一.内联样式,也就是直接把width和height写在HTML元素中的style里: 这种情况使用 document.getElementById('xxx'). ...
- iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
1. Swift与oc混编译具体怎么实现,这儿我就不重复讲出了,网上有大把的人讲解. 2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部 ...
- QT中获取选中的radioButton的两种方法
QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioButton* pbtn = qobject_cast&l ...
随机推荐
- windows下打包react-native应用程序
P.S.0:不截图了,上传图片太麻烦,每次只能上传一张.... 先生成签名文件,如果已有签名文件略过此步: keytool -genkey -v -keystore my-release-key.ke ...
- php ci 2.0框架 ORM
很早知道ci出了2.0版本了.这几天正好有项目要用ci开发 虽然项目不大.不过也从开发项目的过程中熟悉了CI框架 因为是个电商项目 本来想用个YII2 的. 封装的虽然厉害不过功能强大 因为另个兄弟坚 ...
- Mysql优化的几点总结
正常情况下,初创公司的流量并不是很大,mysql数据库在未做优化的情况依然可以满足性能要求,特别是5.6版本后mysql在性能上还是有了很大提升,所以在初期并没有花精力在此上面.但后来发生的一系列问题 ...
- NotSerializableException解决方法
NotSerializableException 问题描述: 想要写入对象的时候的时候回抛出NotSerializableException:类名 原因: 写入的对象没有序列化,即没有实现java.i ...
- [deviceone开发]-直播APP心形点赞动画示例
一.简介 这个示例展示do_Animator组件的简单使用,通过点击"点赞"按钮,不断弹出心形图片,向上动画漂移到顶部消失.间隔时间和上下左右移动的步长都是一定范围的随机值. 二. ...
- [deviceone开发]-do_FrameAnimtionView的简单动画示例
一.简介 do_FrameAnimtionView组件是用加载GIF动态图片和加载一系列图片形成动画效果的展示组件,这个示例直观的展示组件基本的使用方式.适合初学者. 二.效果图 三.相关下载 htt ...
- DOM中的事件处理概览与原理的全面剖析
事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信,DOM支持大量的事件: 本文通过这几点向大家详细解析事件处理的基本原理:事件类型.事件目标.事件处理程序.事件对象.事件传播 最后再向 ...
- Flex布局窥探(一)
一.Flex布局是神马? Flex是Flexible Box的缩写,意为‘弹性布局’,用来为盒模型提供最大的灵活性. 任何容器都能被指定为Flex布局: .box{ display: flex; } ...
- VPN常见错误码(633,628,691)的意思及修复方法
因为工作原因经常上国外网站需要用到VPN,在这里总结一下使用中可能遇到的一些常见问题.(目前用Nydus觉得还不错) 1.633错误 :由于Windows系统本身的问题,在PPTP协议连接多次并断开之 ...
- LayoutInflater的infalte()
其中: resource:是布局文件ID root:是父ViewGroup对象, attachToRoot:是是否将“翻译”出来的View添加到上面的root中 root和attachToRoot是共 ...