如何在xcconfig文件中配置完整URL

时间:2014-01-23 19:42:45

标签: ios iphone xcode build-settings xcconfig

我有一个xcconfig文件,其中包含我的应用应该点击的服务器的配置。在调试模式下,这将是与发布版本不同的服务器。

我遇到的问题是,在双斜杠后,http://www.stackoverflow.com形式的URL被视为注释。所以我在代码中得到的字符串是'http:'

我已经读过我可以在Info.plist上放置一个传统的构建标志,我想知道是否有其他人有类似的问题并且已经解决了它?

感谢。

6 个答案:

答案 0 :(得分:47)

这是一个简单的解决方法:

var TeamSetupViewModel = function () {
    var self = this;
    self.teamsetup = ko.observableArray();
    self.availablePlayers = ko.observableArray();
    self.testPlayers = ko.observableArray();
}
var model = new TeamSetupViewModel();

ko.applyBindings(model, document.getElementById("team-setup"));

var uri = 'api/MainPage/GetTeamSetup/' + getQueryVariable("teamId");

$.get(uri,
    function (data) {
        model.teamsetup(data);
        model.availablePlayers(data.AvailablePlayers);
        model.testPlayers(data.AvailablePlayers);
        console.log(data);
    }, 'json');

});

答案 1 :(得分:31)

我也无法弄清楚如何在xcconfig文件中使用双斜杠。 但我在

中找到了解决方法 来自Xcode-users邮件列表的

:在 xcconfigfile 中,保存不带http方案的URL:

MYURL = stackoverflow.com

Info.plist 中,将属性值设置为

http://${MYURL}

答案 2 :(得分:12)

只需声明

SIMPLE_SLASH=/

然后您的网址变为

http:$(SIMPLE_SLASH)/www.stackoverflow.com

答案 3 :(得分:6)

SLASH=/

API_URL=http:$(SLASH)/endpoint.com

答案 4 :(得分:-3)

您不应该将xcconfig文件用于此设置。

xcconfig文件不是“普通”标头或模块文件,它是预处理器的输入,最终是编译器的输入。它没有指明xcconfig文件解析器如何处理字符编码,它是否识别转义序列,它是否扩展宏,以及如何定义字符文字等等。

在这种情况下,使用“config.h”头文件并使用基于预处理器定义的条件会好得多:

#if defined (DEBUG)
    NSURL* url = ...
#else
    NSURL* url = ...
#endif

此处,默认情况下为调试配置定义DEBUG。您可以在“预处理器宏”下的构建设置中#define任何其他定义。

答案 5 :(得分:-3)

您可以使用反斜杠转义:

URL = "http:\/\/mydomain.com"

修改

在重新构建之前不要忘记清理项目。