.xcconfig? 如何设置环境variables
我是Xcode的新手。
我花了最后两天试图找出如何testing我的iPhone上访问Web服务的应用程序。 在模拟器上,我可以使用一个硬编码的“localhost”variables,但我不想硬编码所有的configuration设置。
我使用的是Swift + Xcode 6,但我认为这与Xcode 5是一样的。
我看了很多文章,我想我应该使用.xcconfig,但它是非常不清楚的。
例如,我创build了一个Environment.xcconfig
文件。 我用它填充它
API_BASE_URL = "http://localhost:4000/api/v1"
然后我进入了Project – > Info并将Debugconfiguration文件设置为Environment
。
然后我尝试通过${API_BASE_URL}
访问代码中的variables,但是我Use of unresolved identifier 'API_BASE_URL'
。
这是非常令人沮丧的。 有任何想法吗?
- 设置configuration层次结构,如果你有豆荚configuration:
或者如果你根本没有任何豆荚,configuration层次结构将如下所示:
-
为每个configuration文件创build所有的键值对(在这种情况下,dev / adhoc / appstore构build有3个configuration文件)。 每个configuration文件都有一组相同的密钥:
-
将每个键添加到生成器:
-
然后只需使用代码中的键:
PS:以这种方式生成的密钥在.swift文件中也是可以识别的(确保你的Swift项目中有一个桥接头,即使你不使用obj-c源代码也是空的)。
更新为Swift 2.2:不再工作了 Swift 2.2:GCC_PREPROCESSOR_DEFINITIONS常量不再导入
你不需要.xcconfig
; 存储Xcode的设置。 相反,你需要一个属性列表( .plist
)文件。 为此,请按command-N
创build一个新文件,然后selectiOS > Resources > Property List
。 使用plist编辑器添加键,值和值types。 然后通过在您的应用程序的某处添加以下行来加载您的属性:
if let filePath = NSBundle.mainBundle().pathForResource("Latin Conjugations", ofType:"plist") { let plist = NSDictionary(contentsOfFile:filePath) }
您可以通过plist词典访问您的属性,就像您使用其他任何字典值一样。 请注意,这不是一个Swift Dictionary
,因为它没有一个构造函数需要加载一个文件path。
更新10/21/2015:这个答案现在是Swift 2.0兼容。 pathForResource()
现在返回一个Optional。