94

我想将 Info.plist 中的捆绑版本信息读入我的代码中,最好是作为字符串。我怎样才能做到这一点?

4

5 回答 5

205

您可以阅读 Info.plist 作为字典

[[NSBundle mainBundle] infoDictionary]

您可以通过这种方式轻松获得CFBundleVersion关键版本。

最后,您可以使用

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
于 2010-10-30T14:28:52.603 回答
12

对于 Swift 用户:

if let version = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") {
    print("version is : \(version)")
}

对于 Swift3 用户:

if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") {
    print("version is : \(version)")
}
于 2015-10-24T18:03:20.103 回答
5

我知道自从寻求和答案以来已经过去了一段时间。

由于 iOS8 接受的答案可能不起作用。

这是现在的新方法:

NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
于 2014-06-25T11:09:20.160 回答
4

现在在 iOS 8 中,这两个字段都是必需的。之前它可以在没有CFBundleShortVersionString. 但现在在应用商店中提交任何应用都是必填的 plist 字段。并kCFBundleVersionKey为上传每个新构建进行比较,必须按增量顺序。专门用于 TestFlight 构建。我这样做,

NSString * version = nil;
    version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    if (!version) {
        version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
    }
于 2014-10-21T11:30:18.350 回答
3

斯威夫特 3:

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
于 2017-06-30T03:02:43.387 回答