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两种)的更多相关文章

  1. 【Swfit】Swift与OC两种语法写单例的区别

    Swift与OC两种语法写单例的区别 例如写一个NetworkTools的单例 (1)OC写单例 + (instancetype)sharedNetworkTools { static id inst ...

  2. java 获取键盘输入常用的两种方法

    java 获取键盘输入常用的两种方法 方法1: 通过 Scanner Scanner input = new Scanner(System.in); String s = input.nextLine ...

  3. QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)

    QT中获取选中的radioButton的两种方法   QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioBu ...

  4. Swift基础之两种选择星星的评价样式并获取星星的索引值

    想练练手,所以封装了一个两种选择星星的评价样式的Demo,并且可以获取到点击的星星的索引值,方便记录值,上传数据时使用 首先创建View类,设计初始化方法,并且用到了枚举类型和代理方法 方式一:默认的 ...

  5. iOS获取设备唯一标识的8种方法

    8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...

  6. 使用JavaScript获取URL中的参数(两种方法)

    本文给大家分享两种方法使用js获取url中的参数,其中方法二是使用的正则表达式方法,大家可以根据需要选择比较好的方法,废话不多说了,直接看详细介绍吧. 方法一: //取url参数 var type = ...

  7. JS获取元素宽高的两种情况

    JS获取元素宽高分两种情况, 一.内联样式,也就是直接把width和height写在HTML元素中的style里: 这种情况使用     document.getElementById('xxx'). ...

  8. iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法

    1. Swift与oc混编译具体怎么实现,这儿我就不重复讲出了,网上有大把的人讲解. 2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部 ...

  9. QT中获取选中的radioButton的两种方法

    QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioButton* pbtn = qobject_cast&l ...

随机推荐

  1. C#Winform VScrollBar+Pannel自定义列表控件(原)

    该控件的主要实现思路是用的objective-c中的自定义控件思路,主视图中放子视图 效果图 (窗体调用代码) public partial class Form1 : RibbonForm { Li ...

  2. 字符串模板替换方法 MessageFormat.format

    String content = "ab,cc,{名称},{密码},{日期},dd,ff"; String array[] = {userName, password, forma ...

  3. IO碰到的问题

    1.流关了,并不代表流对象为空 可是java并没提供查看流是否关闭的方法 不过如果流已经关闭了以后,再对流进行操作的话,会抛出IOException:Stream closed异常 可以根据这个异常来 ...

  4. Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3

    最近重新查看微软MvcMusicStore-v3.0的源代码,发现忽略了很多重要的东西,特别是数据访问那一部分. 首先Microsoft SQL Server Compact 4.0 详细的介绍和下载 ...

  5. [读码]HTML5像素文字爆炸重组

    [边读码,边学习,技术也好,思路也罢] [一款基于HTML5技术的文字像素爆炸重组动画特效,我们可以在输入框中指定任意文字,点击确定按钮后,就会将原先的文字爆炸散去,新的文字以像素点的形式组合起来,看 ...

  6. swift学习笔记之-类和结构体

    //类和结构体 import UIKit //类和结构体 /* 1.枚举enum.结构体struct和String.Array.Dictionary类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...

  7. delphi 事件和属性的绑定

    TWindowState = (wsNormal, wsMinimized, wsMaximized); TScrollingWinControl = class(TWinControl) priva ...

  8. java类 对象 和构造方法

    github地址:https://github.com/lily1010/java_learn/tree/master/dog java中对象和类 java中万物皆对象,比如说动物,里面有猫,狗,鱼等 ...

  9. Node创建应用

    github地址:https://github.com/lily1010/Node_learn/tree/master/test 一 使用node的意义 使用 Node.js 时,我们不仅仅 在实现一 ...

  10. 总结CSS3新特性(Transform篇)

    概述: CSS3新添加的Transform可以改变元素在可视化区域的坐标(这种改变不会引起文档的重排,只有重排),以及形状,还有些3D形变.结合 Animation(这里以后会有个链接的) 能实现酷炫 ...