iOS中的计划或目标

iOS中的计划或目标,ios,xcode,target,Ios,Xcode,Target,我有一个项目,可以根据不同的环境不同,所以该项目是完全相同的,只有一些URL的变化。通常我有自己的工作环境,在那里我可以访问虚拟web服务,然后当需要开始使用客户机的web服务时,我只想快速切换这些URL。为了实现这一点,我最初的想法是根据每个web服务端点拥有不同的plist文件(客户端可以有多个URL:预生产、测试和生产)。因此: 这是我最好的选择吗?每个web服务端点具有不同的plist?(同样,项目完全相同,只是端点不同) 为每个不同的目标创建一个新的目标有意义吗 环境或者我能在同样的计

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

  • 这是我最好的选择吗?每个web服务端点具有不同的plist?(同样,项目完全相同,只是端点不同)

  • 为每个不同的目标创建一个新的目标有意义吗 环境或者我能在同样的计划中做到这一点吗 目标


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

    #define _DEBUG_MODE
      NSString endpoiunt = @"foo";
    #elseif
      NSString endpoiunt = @"foo";
    #endif
    
    然后,您可以轻松地为调试方案附加一个编译器标志,在其中声明宏,而无需担心必须指向不同的目标


    如果您希望保留一个.plist文件,您可以很容易地使用相同的方法,但更改文件名,而不是硬拷贝端点。但是,除非使用两个目标,否则您将在包中复制两个plist(我想在复制阶段甚至可以有条件地包括文件,但不确定如何执行)

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

    MonapsWebServiceURL.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(只要在装运前将其卸下)


    当然,对于更复杂的问题有更复杂的解决方案,但这可能是您所需要的全部。在我看来,这种情况下不需要任何方案或其他目标。

    确实忘记了
    \define\u DEBUG\u模式
    舞蹈,谢谢。是的,我想我会选择plist方法。为什么不在新的构建配置中设置
    MON\u APP\u USE\u DUMMY\u SERVICE
    (或任何其他额外的预处理器定义)?然后创建一个使用该新配置的新方案。这样,您就可以在IDE中选择方案(或使用xcodebuild)来构建目标,而无需进一步手动干预。@直到这两种方法都有各自的优点(和缺点)