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. 《Java4Android》视频学习笔记——包和访问权限(一)

    怎么打包?代码如下 package org.marsdroid; class Test{ public static void main(String args[]){ System.out.prin ...

  2. CI框架源码阅读笔记5 基准测试 BenchMark.php

    上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...

  3. IOS 非常流畅的滑动tableView

    为什么要写这篇文章呢?之前写过一篇,因为手机打字不是很方便,还有之前同事用6splus 定下午茶时候,我滑动列表时候竟然误以为是安卓系统的手机.   tableview 流畅度可以用fps来测试,到6 ...

  4. 很漂亮的SweetAlert.js 弹出层

    在线实例 实例演示 使用方法 swal("Here's a message!") 复制 参数详解 参数 默认值 描述 title null(required) 窗口的名称.可以通过 ...

  5. 8款适合乐队、歌手和音乐家免费 WordPress 主题

    这篇文章与大家分享8款适合乐队.歌手和音乐家免费 WordPress WordPress 音乐网站主题.WordPress 作为最流行的博客系统,插件众多,易于扩充功能.安装和使用都非常方便,而且有许 ...

  6. [js开源组件开发]模拟下拉选项框select

    模拟下拉选项框select 在css3流行的情况下,下拉框还是无法满足PD的需求,所以有了autosearch,有了模拟下拉框.效果如下图: select DEMO请案例点击这里查看.http://w ...

  7. ng-cordova 手机拍照或从相册选择图片

    1.需求描述 实现一个调用摄像头拍照,或者直接打开本地图库选择照片,然后替换App中图片的功能 2.准备 1) 安装ng-cordova 进入到ionic工程目录,使用bower工具安装, bower ...

  8. SharePoint Error - The SharePoint server was moved to a different location.

    错误 The SharePoint server was moved to a different location. ( Error from SharePoint site: HttpStatus ...

  9. 分配给 主机的 Evaluation Mode 许可证已过期。建议升级许可证。

    参考文献 http://247its.wordpress.com/2012/04/02/new-build-esxi-5-complaints-licence-has-expired/ http:// ...

  10. ubuntu下cacti安装配置

    参考文献 http://kling.blog.51cto.com/3320545/1180778 前言: 原本是想源码安装的,但是现在发现还是太麻烦了,就直接通过apt-get install安装了. ...