【问题标题】:Swift application has no version?Swift 应用程序没有版本?
【发布时间】:2021-11-06 06:02:09
【问题描述】:

我正在尝试获取我的应用版本,在关注this 之后,我尝试了以下代码:

import foundation
var config: [String: Any]?

if let infoPlistPath = Bundle.main.url(forResource: "Info", withExtension: "plist") {
    do {
        let infoPlistData = try Data(contentsOf: infoPlistPath)
        
        if let dict = try PropertyListSerialization.propertyList(from: infoPlistData, options: [], format: nil) as? [String: Any] {
            config = dict
        }
    } catch {
        print(error)
    }
}

print(config?["CFBundleName"])
// Optional(example-info)

print(config?["CFBundleVersion"])
// Optional(1)

print(config?["CFBundleShortVersionString"])
// Optional(1.0)

但结果我总是得到 nil。

这是否意味着我的应用没有版本?如果是,如何设置版本?

另外,当我用 Xcode 调查 Info.plist 文件时,我发现它是空的!

【问题讨论】:

  • 您是在构建 .app 包还是命令行工具?您是否指定了Info.plist 文件(Xcode 在创建新应用时默认这样做)。
  • 我正在构建一个命令行工具
  • 这就是您的问题的原因,命令行应用程序仅包含可执行文件,而应用程序包 (.app) 实际上是包含可执行文件和 Info.plist 文件(以及其他文件)的目录。跨度>
  • 请参阅此:stackoverflow.com/q/55518922/1187415 和此:stackoverflow.com/q/7797773/1187415,了解如何在命令行工具中嵌入 Info.plist。
  • 发布你的真实代码import foundation???

标签: swift plist versioning


【解决方案1】:

感谢@Martin R 的评论,我通过将新的 plist 文件链接到项目解决了我的问题

【讨论】:

    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 2021-05-19
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多