我正在编写一款iPhone应用,它已经发布了,但我希望添加一个功能,显示其版本号。
我不想每次发布新版本都手动添加这个信息...
在objective-C中有没有一种方法可以找出我的应用程序的版本号?
我正在编写一款iPhone应用,它已经发布了,但我希望添加一个功能,显示其版本号。
我不想每次发布新版本都手动添加这个信息...
在objective-C中有没有一种方法可以找出我的应用程序的版本号?
您可以使用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)"
}
读取应用程序的info.plist文件,并获取键CFBundleShortVersionString的值。读取info.plist将给您一个NSDictionary对象。
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
。
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
,则无需这样做。NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
使用版本控制系统处理这个问题是一个好主意。这样,当用户报告错误时,您可以检查该代码修订版并(希望)运行与用户完全相同的代码来重现错误。
这个想法是每次构建时,您都会运行一个脚本,获取您的代码的当前修订号并更新项目中的文件(通常使用某种令牌替换)。然后,您可以编写一个错误处理程序,始终在错误输出中包含修订号,或者您可以在“关于”页面上显示它。