【发布时间】: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