gpt4 book ai didi

ios - Swift 在运行时获取 `Scheme Name or Swift Compiler - Custome Flags` 值

转载 作者:行者123 更新时间:2023-11-28 11:25:02 24 4
gpt4 key购买 nike

我有 3 个方案的 swift xcode 项目。

我有每个方案的 plist 文件,在那个 plist 文件中我有常量值,如字体名称、颜色和 Logo 名称等。假设我有 3 个方案1. 香蕉2.橙色3. 苹果

所以对于这些所有方案,我有 plist 文件名作为1.香蕉计划2.橙色方案3.苹果方案

现在我在这个文件中有一个名为 SchemeConfig 的 swift 文件,我必须读取这个 plist 文件并返回常量的值。

要读取 plist 文件,我有如下一种方法

private func getConfigFile() -> [String: Any]? {
var configFileName: String = ""
#if Banana
configFileName = "BananaScheme"
#elseif Orange
configFileName = "OrangeScheme"
#elseif Apple
configFileName = "AppleScheme"
#endif

// let targetName = Bundle.main.infoDictionary?["TargetName"] as! String
if let url = Bundle.main.url(forResource: "\(configFileName)", withExtension: "plist"),
let dict = NSDictionary(contentsOf: url) as? [String:Any] {
return dict
}
return nil
}

它工作得很好,但问题是我不想检查 #if 条件我可以在运行时获取 Swift Compiler - Custome Flags 值吗?

像这样 let targetName = Bundle.main.infoDictionary?["TargetName"] as!字符串 ?

我想要的是删除 #if 条件来检查方案。

private func getConfigFile() -> [String: Any]? {
var configFileName: String = ""

let schemename = //Code to get scheme name
if let url = Bundle.main.url(forResource: "\(schemename)Scheme", withExtension: "plist"),
let dict = NSDictionary(contentsOf: url) as? [String:Any] {
return dict
}
return nil
}

最佳答案

因此您可以根据编译器标志创建用户定义的变量。

首先在build设置中创建一个用户定义的变量。在这种情况下 CURRENT_SCHEME_NAME enter image description here

然后像这样给每个编译器标志一个不同的值:

enter image description here

接下来您要将这个键值对添加到您的 info.plist 中:

enter image description here

最后,您可以在运行时使用以下方法访问此值:

let schemeName = Bundle.main.infoDictionary!["CURRENT_SCHEME_NAME"] 作为!字符串

关于ios - Swift 在运行时获取 `Scheme Name or Swift Compiler - Custome Flags` 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58432568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com