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

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

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


当前回答

正如我在这里描述的,我使用一个脚本来用我当前的Subversion版本号重写头文件。修订号存储在kRevisionNumber常量中。然后,我可以使用类似于下面的东西访问版本和修订号:

[NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], kRevisionNumber]

这将创建一个格式为“Version 1.0(51)”的字符串。

其他回答

你可以试试这个方法:

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

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

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

NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]
func getAppVersion() -> String {
    let dictionary = Bundle.main.infoDictionary!
    let versionValue = dictionary["CFBundleShortVersionString"] ?? "0"
    let buildValue = dictionary["CFBundleVersion"] ?? "0"
    return "\(versionValue) (build \(buildValue))"
}

基于@rajat chauhan的回答,没有强制转换为字符串。

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

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

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

获取App版本: NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; 获取构建版本: NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];