我正在写一个iPhone应用程序。它已经发布,但是我想在其中显示其版本号的地方添加一个功能。
我宁愿不必在发布的每个版本中手动执行此操作...
在Objective-C中有没有办法找出我的应用程序的版本?
我正在写一个iPhone应用程序。它已经发布,但是我想在其中显示其版本号的地方添加一个功能。
我宁愿不必在发布的每个版本中手动执行此操作...
在Objective-C中有没有办法找出我的应用程序的版本?
Answers:
正如我在这里描述的,我使用脚本用我当前的Subversion修订版号重写头文件。该修订号存储在kRevisionNumber常数中。然后,我可以使用类似于以下内容的方式访问版本和修订号:
[NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], kRevisionNumber]
它将创建格式为“版本1.0(51)”的字符串。
CFBundleShortVersionString
您通常想要的“版本”和CFBundleVersion
内部版本号。
[NSString stringWithFormat:@"Version: %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]
基于布拉德·拉尔森(Brad Larson)的答案,如果您在信息plist中存储了主要和次要版本信息(就像我在特定项目中所做的那样),那么这对我来说效果很好:
- (NSString *)appNameAndVersionNumberDisplayString {
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *appDisplayName = [infoDictionary objectForKey:@"CFBundleDisplayName"];
NSString *majorVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
NSString *minorVersion = [infoDictionary objectForKey:@"CFBundleVersion"];
return [NSString stringWithFormat:@"%@, Version %@ (%@)",
appDisplayName, majorVersion, minorVersion];
}
现在,手动修订次要版本可能很麻烦,因此使用源存储库修订号技巧是理想的选择。如果您尚未将其绑定(如我所没有),则以上代码段可能会很有用。它还会拉出应用程序的显示名称。
两者的Swift版本分别:
迅捷3
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
迅捷2
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
它包含在此仓库中,请查看:
这就是我在应用程序中所做的
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
希望这个简单的答案可以对某人有所帮助。
您可以CFBundleShortVersionString
在plist.info中指定字符串,并使用提供的API以编程方式读取该字符串。
有两件事-构建版本和应用程序版本。
要获取应用版本:
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
要获得内部版本:
NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
objectForInfoDictionaryKey:
代替,infoDictionary] objectForKey:
因为前者返回本地化的值(如果有的话)。虽然可能不会在这里
读取应用程序的info.plist文件,并获取键CFBundleShortVersionString的值。阅读info.plist将为您提供NSDictionary对象
您可以使用infoDictionary从应用程序的info.plist获取版本详细信息。此代码适用于swift3。只需调用此方法,然后在任何首选的UI元素中显示版本。
Swift-3
func getVersion() -> String {
let dictionary = Bundle.main.infoDictionary!
let version = dictionary["CFBundleShortVersionString"] as! String
let build = dictionary["CFBundleVersion"] as! String
return "v\(version).\(build)"
}
斯威夫特5:
有两件事-App版本和build版本
要获取应用版本:
if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
// present appVersion
}
要获得内部版本:
if let buildVersion = Bundle.main.infoDictionary?["CFBundleVersion"] as? String {
// present buildVersion
}
感谢@Brad Larson♦
了很多
如果您需要版本和 build num的组合,这是使用Swift 3的一种简短方法:
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"]!
let buildNum = Bundle.main.infoDictionary!["CFBundleVersion"]!
let versionInfo = "\(appVersion) (build \(buildNum))"
// versionInfo is now something like "2.3.0 (build 17)"
as! String
在appVersion
或buildNum
行的末尾添加一个,以仅将该部分作为String
对象。不需要,但是如果您正在寻找完整的versionInfo
。
我希望这有帮助!