【问题标题】:Swift: different builds connect to different serversSwift:不同的构建连接到不同的服务器
【发布时间】:2016-06-08 00:16:58
【问题描述】:

我有一个使用 HTTP 连接到服务器的 Swift iOS 项目。有两台服务器,一台用于开发,一台用于生产。当我在 Xcode 中编辑和测试我的应用程序时,我希望它连接到开发服务器。然后当代码准备好时,我使用以下命令构建 IPA 以供发布:

xcodebuild archive -scheme MyApp -archivePath ~/Archive/MyApp
xcodebuild -exportArchive -archivePath ~/Archive/MyApp.xcarchive -exportPath ~/IPA/MyApp -exportFormat ipa -exportProvisioningProfile "My Provisioning Profile"

并且我希望此发行版 IPA 连接到生产服务器。那么最好的方法是什么?

【问题讨论】:

  • 一个简单的方法是在这个旧答案中:stackoverflow.com/questions/20863628/…
  • @ciccioska:你的意思是创建两个目标?这可能行得通,但就我的目的而言,它似乎有点太重了,因为每次我构建我的应用程序时,我真的只需要一个目标。另外,维护两个目标可能很麻烦。有没有更简单的方法?

标签: ios swift build ipa


【解决方案1】:

如果您不想创建单独的目标,那么最好的方法是在 plist 或 Web 服务处理程序类中定义的宏中添加 BASE_URL 条目,然后在所有 http 请求中使用它。缺点是每次创建 IPA 之前您都必须手动更改它。

像这样定义宏:

#ifdef DEBUG
    NSString* const kURL = @"http://debug.com";
#else
    NSString* const kURL = @"http://release.com";
#endif

【讨论】:

    【解决方案2】:

    第 1 步:创建 Swift 编译器自定义标志

    1. 在 Xcode 中打开 Project Navigator J
    2. 选择项目根
    3. 选择您的目标
    4. 查找Swift Compiler - Custom Flags > Other Swift Flags 部分
    5. 添加到Debug这个条目:-D DEBUG

    第 2 步:创建 Swift 预处理器宏

    然后把这个写在你的代码里

    #if DEBUG
    let server = "http://www.yourserver.com/debug/"
    #else
    let server = "http://www.yourserver.com/production/"
    #endif
    

    【讨论】:

    • 我终于有机会尝试您的解决方案。它有效,而且很优雅。非常感谢!
    猜你喜欢
    • 2013-01-04
    • 2012-12-24
    • 2011-04-15
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2018-04-30
    • 2013-06-19
    • 1970-01-01
    相关资源
    最近更新 更多