我正在写一个iPhone应用程序.它已经发布,但我想添加一个显示其版本号的功能.
对于我发布的每个版本,我宁愿不必手动执行此操作...
在Objective-C中有没有办法找出我的应用程序的版本是什么?
正如我在这里描述的,我使用脚本用我当前的Subversion修订版号重写头文件.该修订号存储在kRevisionNumber常量中.然后,我可以使用类似于以下内容的方式访问版本和修订号:
[NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], kRevisionNumber]
这将创建格式为"Version 1.0(51)"的字符串.
基于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
它包含在这个回购中,请查看:
https://github.com/goktugyil/EZSwiftExtensions
这就是我在申请中所做的
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
希望这个简单的答案能帮助某人......
您可以CFBundleShortVersionString
在plist.info中指定字符串,并使用提供的API以编程方式读取该字符串.
有两件事 - 构建版本和应用程序版本.
要获得应用版本:
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
要获得Build版本:
NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
// Syncs with App Store and Xcode Project Settings Input NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
获取XYZ格式的版本字符串的简洁方法是:
[NSBundle mainBundle].infoDictionary[@"CFBundleVersion"]
或者,对于XY:
[NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]
这两个片段都返回您将分配给标签对象的文本属性的字符串,例如
myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
您可以尝试使用字典: -
NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary]; NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey]; NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]