代码之家  ›  专栏  ›  技术社区  ›  John Smith

从Info.plist读取版本

  •  85
  • John Smith  · 技术社区  · 14 年前

    我想将包版本信息从info.plist读入我的代码,最好是作为字符串。我该怎么做?

    5 回复  |  直到 13 年前
        1
  •  200
  •   gcamp    14 年前

    你可以用

    [[NSBundle mainBundle] infoDictionary]
    

    你可以很容易地在 CFBundleVersion 钥匙在那边。

    NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
    NSString* version = [infoDict objectForKey:@"CFBundleVersion"];
    
        2
  •  10
  •   wenzel ayalcinkaya    7 年前

    对于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)")
    }
    
        3
  •  5
  •   swiftBoy Vmanani    9 年前

    因为iOS8,接受的答案可能不起作用。

    这是现在的新方法:

    NSString *version = (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey);
    
        4
  •  4
  •   karim    10 年前

    CFBundleShortVersionString . 但现在它是一个必需的plist字段来提交app store中的任何应用程序。以及 kCFBundleVersionKey 比较是否上载每个新生成,该生成必须按增量顺序进行。专门用于测试飞行构建。我是这样做的,

    NSString * version = nil;
        version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
        if (!version) {
            version = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
        }
    
        5
  •  3
  •   Nitin Nain    7 年前

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