我有一个项目可以根据不同的环境而有所不同,所以项目完全相同,只有一些URL的变化。通常我有我的工作环境,我访问我的虚拟Web服务,然后当需要开始使用客户端的Web服务时,我只想快速切换这些URL。为实现这一目标,我最初的想法是根据每个Web服务端点拥有不同的plist文件(客户端可以有多个URL:预生产,测试,生产)。所以:
这是我最好的选择吗?每个Web服务端点都有不同的plist? (再次,项目完全相同,只有端点不同)
为每个不同的人创建新目标是否有意义 环境?或者我能够在相同的方案中做到这一点 目标
答案 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
}
这需要在您进行更改时更改和重新编译一个文件。此方法也可用于识别要装载的钳子(只要您在装运前将其移除)。
当然,对于更复杂的问题,有更复杂的解决方案,但这可能是您所需要的。正如我所见,在这种情况下不需要任何计划或额外目标。