如何在 SwiftUI 中从 General/Targets 中读取 Xcode 中的版本和构建

How to read Version & Build in Xcode from General/Targets in SwiftUI

在我的第一个应用程序(我用 SwiftUI 编写)中,我想添加一个按钮来向我发送邮件以获取反馈、错误... 该按钮工作完美,但我想在此邮件中添加我的应用程序的当前版本和构建。它显示在 General/Targets/Identity 中。但是我找不到办法做到这一点。

Button(action: {
    if let url = URL(string: "mailto:mail@mymailadress.com?subject=MyApp%20Feedback&body=Hallo,%3Cbr%3Ei%20will%20tell%20you%20something%20about%20this%20app:%3Cbr%3E%3Cbr%3EVersion:%20\(AppVersionBuild)"){
        UIApplication.shared.open(url as URL, options: [:], completionHandler: nil)
    } 
}) {
    HStack{
        Image(systemName: "envelope")
        Text("send a mail to mail@mymailadress.com")
    }
    .padding(10)
    .foregroundColor(.white)
    .background(LinearGradient(gradient: Gradient(colors: [Color("GradientStart"), Color("GradientEnd")]), startPoint: .topLeading, endPoint: .bottomTrailing))
    .cornerRadius(10, antialiased: false)
    .shadow(radius: 10)
}

知道如何将版本放入邮件正文(变量,例如 AppVersionBuild)吗?

谢谢

您可以创建一个 returns 版本和内部版本号

的函数
func versionAndBuildNumber() -> String {
    let versionNumber = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
    let buildNumber = Bundle.main.infoDictionary?["CFBundleVersion"] as? String
    if let versionNumber = versionNumber, let buildNumber = buildNumber {
        return "\(versionNumber) (\(buildNumber))"
    } else if let versionNumber = versionNumber {
        return versionNumber
    } else if let buildNumber = buildNumber {
        return buildNumber
    } else {
        return ""
    }
}

并将\(AppVersionBuild)替换为以下\(versionAndBuildNumber())