我正在写一个iPhone应用程序。它已经发布,但我想添加一个功能,其版本号显示。
我不希望对我发布的每个版本都手动执行此操作……
objective-C中有办法找出我的应用的版本吗?
我正在写一个iPhone应用程序。它已经发布,但我想添加一个功能,其版本号显示。
我不希望对我发布的每个版本都手动执行此操作……
objective-C中有办法找出我的应用的版本吗?
当前回答
你可以试试这个方法:
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
其他回答
根据Brad Larson的回答,如果你在info 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];
}
现在手动更新小版本可能会很痛苦,因此使用源存储库修订号技巧是理想的。如果您还没有绑定它(就像我没有),上面的代码段可能会很有用。它还会提取应用程序的显示名称。
你可以使用infoDictionary从info中获取版本细节。这段代码适用于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)"
}
你可以试试这个方法:
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
正如我在这里描述的,我使用一个脚本来用我当前的Subversion版本号重写头文件。修订号存储在kRevisionNumber常量中。然后,我可以使用类似于下面的东西访问版本和修订号:
[NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], kRevisionNumber]
这将创建一个格式为“Version 1.0(51)”的字符串。
func getAppVersion() -> String {
let dictionary = Bundle.main.infoDictionary!
let versionValue = dictionary["CFBundleShortVersionString"] ?? "0"
let buildValue = dictionary["CFBundleVersion"] ?? "0"
return "\(versionValue) (build \(buildValue))"
}
基于@rajat chauhan的回答,没有强制转换为字符串。