在xcode中为不同的构建配置维护不同的URL

3

我为我的Xcode项目创建了四个不同的构建配置,它们是QA、STAGING、UAT和PRODUCTION。我为每个构建配置都创建了一个不同的URL。

现在我的问题是,Xcode 4非常擅长检测DEBUG模式,因为已经有预定义的宏可用,但是我如何检测我的自定义构建,以便我可以针对不同的构建配置传递不同的URL?

2个回答

2

在每个构建配置中,进入构建设置并添加#define THIS_IS_QA=1,然后在您的代码中测试它并像使用DEBUG宏一样使用它。


你的意思是在预处理器宏中还是其他地方?我应该在构建设置中的哪里输入 "#define THIS_IS_QA=1"? - user431791
DEBUG被定义在同一个地方吗?是的。 - deleted_user
预处理器宏在更改调试/发布构建等设置时非常有用。 - Dan F
好的,我已经在预处理宏中完成了它。但是在代码中当我使用 "#if THIS_IS_QA" 时,它会给我以下错误:未终止的条件指令。 - user431791
语法错误,你需要一个 #endif。 - deleted_user
显示剩余2条评论

0

预处理器宏路线运行良好且实现快速。但是,由于您最终会得到每个变量的副本,因此它不具有良好的可扩展性。我发现最好的方法是执行以下操作:

  1. 将配置定义为项目或目标构建设置中的用户定义设置。
    • 这样做允许为每个构建配置(例如调试或发布甚至自定义配置)指定不同的值。
  2. 在项目的plist文件中创建一个信息属性。
    • 这允许通过plist访问构建设置。
  3. 编写一次代码以从plist文件加载值。

示例:

在项目中创建名为“BASE_API_URL”的用户定义设置,并将调试配置设置为“http://www.test.example.com”,将发布配置设置为“http://www.example.com”。

然后,在plist中创建一个新的信息属性,其键为“BaseAPIUrl”,值为“$(BASE_API_URL)”

最后,在应用程序委托中定义基本URL时添加以下代码:

let baseUrl: NSString = NSBundle.mainBundle().infoDictionary?["BaseAPIUrl"]! as NSString

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接