从Info.plist中读取版本

时间:2010-10-30 14:25:13

标签: iphone objective-c cocoa-touch xcode info.plist

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

5 个答案:

答案 0 :(得分:197)

您可以使用

将您的Info.plist读作字典
[[NSBundle mainBundle] infoDictionary]

您可以通过这种方式轻松获取CFBundleVersion密钥的版本。

最后,您可以使用

获取版本
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSString* version = [infoDict objectForKey:@"CFBundleVersion"];

答案 1 :(得分:10)

对于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)")
}

答案 2 :(得分:5)

我知道自任务和答案以来已经过了一段时间。

从iOS8开始,接受的答案可能无效。

这是现在这样做的新方法:

NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);

答案 3 :(得分:4)

现在在iOS 8中,这两个字段都是必需的。之前它没有CFBundleShortVersionString。但现在,在app store中提交任何应用程序都是必需的plist字段。并且比较kCFBundleVersionKey以上载每个新构建,其必须按递增顺序。特别适用于TestFlight构建。我是这样做的,

NSString * version = nil;
    version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    if (!version) {
        version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
    }

答案 4 :(得分:3)

斯威夫特3:

let appBuildNumber = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String