如何以编程方式显示在iOS应用程序中的目标版本/内部版本号?

如何以编程方式获取target version的值,如下图所示?

正如在我的Xcode项目的目标的属性窗口中看到的。 我想在我的应用程序的启animation面中显示这个,所以我知道人们目前正在使用哪个版本?

2个数字!

营销发布号码是针对客户的,称为版本号 。 它从1.0开始,主要更新到2.0,3.0 ,对1.1,1.2进行小的更新,并修复到1.0.1,1.0.2 。 这个数字是关于发布和新function的。 它不必停在9,1.11.23是一个合理的版本号。

内部 版本号大部分是在此之前制作内部版本号 。 但有些使用其他数字,如存储库的分支号码或提交号码。 这个数字应该是唯一的,以区分不同的版本,只有轻微的增量变化。


获取版本号:

Objective-C的:

 NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 

Swift <3.0:

 let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String 

Swift 3.0:

 let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String 

获取版本号:

Objective-C的:

 NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; 

Swift <3.0:

 let buildNumber: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String 

Swift 3.0:

 let buildNumber: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String 

如果你想在一个:

然后你必须首先使用上面的行。

Objective-C的:

 NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString]; 

迅速:

 let versionAndBuildNumber: String = "\(versionNumber) (\(buildNumber))" 

笔记:

主包中的值并不总是存在的,例如在命令行应用程序中没有CFBundleShortVersionStringCFBundleVersion ,所以这些方法将返回nil ,并且会崩溃,因为在代码中会产生不正确的downcast。 但在正常的cocoaiOS和Mac应用程序中,这些值已被定义,不会被删除。

这是用Xcode版本7.3(7D175)进行testing。 内部版本号通常写在括号/大括号中。 内部版本号是hex或十进制。

buildandversion


Xcode中,您可以通过在项目设置中的Run script构build”阶段中放置以下内容来自动递增内部版本号作为十进制数字

 #!/bin/bash  buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") buildNumber=$(($buildNumber + 1)) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE" 

对于hex编号,使用这个脚本

 buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") buildNumber=$((0x$buildNumber)) buildNumber=$(($buildNumber + 1)) buildNumber=$(printf "%X" $buildNumber) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE" 

对于Xcode请执行以下操作:

步骤1

步骤1

第2步

第2步

第3步

第三步:

您不需要更改项目或XCode中的任何内容。 下面分别为Swift版本:

 let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String 

它包括在这个回购,检查出来:

https://github.com/goktugyil/EZSwiftExtensions

这里同样的代码Swift 3

 let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String