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

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

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


当前回答

你可以试试这个方法:

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

其他回答

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

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

获取X.Y.Z格式版本字符串的简单方法是:

[NSBundle mainBundle].infoDictionary[@"CFBundleVersion"]

或者,对于X.Y:

[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]

根据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];
}

现在手动更新小版本可能会很痛苦,因此使用源存储库修订号技巧是理想的。如果您还没有绑定它(就像我没有),上面的代码段可能会很有用。它还会提取应用程序的显示名称。

阅读信息。你的应用程序的plist文件,并获得值的关键CFBundleShortVersionString。阅读信息。plist会给你一个NSDictionary对象