我的iPhone应用程序如何检测自己的版本号?

256

我正在编写一款iPhone应用,它已经发布了,但我希望添加一个功能,显示其版本号。

我不想每次发布新版本都手动添加这个信息...

在objective-C中有没有一种方法可以找出我的应用程序的版本号?


1
这个问题已经在这里得到了回答 https://dev59.com/g2Qn5IYBdhLWcg3wXGKr#16888788。 - Akshat Singhal
1
链接的问题是4年前的,所以真正的问题在于cmos从未“接受”答案。尽管如此,链接问题的答案很有用,这里的答案也是如此。在两个线程上,不要只看第一个答案-有时后面的答案会提供更多最新信息。 - ToolmakerSteve
16个回答

4

您可以使用infoDictionary从应用程序的info.plist中获取版本详细信息。此代码适用于swift 3。只需调用此方法并在任何首选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)"
}

4

读取应用程序的info.plist文件,并获取键CFBundleShortVersionString的值。读取info.plist将给您一个NSDictionary对象。


1
func getAppVersion() -> String {
    let dictionary = Bundle.main.infoDictionary!
    let versionValue = dictionary["CFBundleShortVersionString"] ?? "0"
    let buildValue = dictionary["CFBundleVersion"] ?? "0"
    return "\(versionValue) (build \(buildValue))"
}

根据@rajat chauhan的答案,无需强制转换为String


1
如果您需要同时包含版本和构建编号的组合,这里有一种使用 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添加到appVersionbuildNum行的末尾,以获取该部分作为String对象。如果您要查找完整的versionInfo,则无需这样做。
希望这可以帮助您!

0
你可以尝试这个方法:
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

0

使用版本控制系统处理这个问题是一个好主意。这样,当用户报告错误时,您可以检查该代码修订版并(希望)运行与用户完全相同的代码来重现错误。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接