iOS中的方案或目标

时间:2012-05-12 20:22:03

标签: ios xcode target

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

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

  2. 为每个不同的人创建新目标是否有意义 环境?或者我能够在相同的方案中做到这一点 目标

2 个答案:

答案 0 :(得分:2)

根据您需要更改的参数数量,您可以使用宏,例如

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

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

如果您希望保留 .plist 文件,则可以轻松使用相同的方法,但更改文件名,而不是硬终结端点。但是除非使用两个目标,否则你将在包中复制两个plist(我想甚至有可能在复制阶段有条件地包含文件,但不知道如何做到这一点)

答案 1 :(得分: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
}

这需要在您进行更改时更改和重新编译一个文件。此方法也可用于识别要装载的钳子(只要您在装运前将其移除)。

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