我正在写一个iPhone应用程序。它已经发布,但我想添加一个功能,其版本号显示。

我不希望对我发布的每个版本都手动执行此操作……

objective-C中有办法找出我的应用的版本吗?


当前回答

这就是我在申请中所做的

NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

希望这个简单的答案能帮助到一些人……

其他回答

斯威夫特5:

有两件事——应用版本和构建版本

获取App版本: if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as?字符串{ //当前appVersion } 获取构建版本: if let buildVersion = Bundle.main.infoDictionary?["CFBundleVersion"] as?字符串{ //当前buildVersion }

非常感谢布拉德·拉森(brad Larson)

你可以尝试使用字典作为:-

NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary];

NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]

对于版本控制系统来说,这是一件很好的事情。这样,当您从用户那里得到错误报告时,您可以检查代码的修订,并(希望)在运行与用户完全相同的代码时重现错误。

其思想是,每次构建时,您都将运行一个脚本,该脚本获取代码的当前修订号,并更新项目中的文件(通常使用某种形式的令牌替换)。然后,您可以编写一个错误处理例程,在错误输出中始终包含修订号,或者您可以在“About”页面上显示它。

您可以在plist.info中指定CFBundleShortVersionString字符串,并使用提供的API以编程方式读取该字符串。

获取X.Y.Z格式版本字符串的简单方法是:

[NSBundle mainBundle].infoDictionary[@"CFBundleVersion"]

或者,对于X.Y:

[NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]

这两个代码段都返回字符串,您可以将其分配给标签对象的文本属性,例如。

myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];