4

我有一个项目,可以根据不同的环境而有所不同,所以项目是完全一样的,只是一些URL的变化。通常我有我的工作环境来访问我的虚拟 Web 服务,然后当需要开始使用客户端的 Web 服务时,我只想快速切换这些 URL。为了实现这一点,我最初的想法是根据每个 Web 服务端点(客户端可以有多个 URL:预生产、测试​​、生产)来拥有不同的 plist 文件。所以:

  1. 这是我最好的选择吗?每个 Web 服务端点都有不同的 plist?(再次项目完全相同,只是端点不同)

  2. 为每个不同的环境创建一个新目标有意义吗?或者我可以在同一目标的计划中做到这一点吗?

4

2 回答 2

2

根据您需要更改多少参数,您可以使用宏进行更改,例如。

#define _DEBUG_MODE
  NSString endpoiunt = @"foo";
#elseif
  NSString endpoiunt = @"foo";
#endif

然后,您可以轻松地为您声明宏的调试方案附加编译器标志,而不必担心必须使用不同的目标。

如果您更喜欢保留.plist文件,您可以轻松地使用相同的方法,但更改文件名而不是hardocidng端点。但是除非使用两个目标,否则您将在包中复制两个 plist(我想甚至可以在复制阶段有条件地包含文件,但不知道该怎么做)

于 2012-05-12T20:37:06.433 回答
0

对于简单的情况,您可以采取以下方法:

MONAppsWebServiceURL.h

NSURL * MONAppsWebServiceURL(void);

MONAppsWebServiceURL.m

#import "MONAppsWebServiceURL.h"

#define MON_APP_USE_DUMMY_SERVICE 1

NSURL * MONAppsWebServiceURL(void) {
#if MON_APP_USE_DUMMY_SERVICE
// perhaps you want warnings as errors for distro
#warning using dummy web service
  return the dummy url;
#else
  return the real url;
#endif
}

当您进行更改时,这需要更改和重新编译一个文件。这种方法也可用于识别要加载的 plist(只要您在发货前将其删除)。

当然,对于更复杂的问题,还有更复杂的解决方案,但这可能就是您所需要的。如我所见,在这种情况下不需要任何计划或额外的目标。

于 2012-05-12T21:14:37.560 回答