在Swift中使用条件编译定义全局变量

时间:2016-09-16 17:28:07

标签: ios swift global-variables preprocessor

我想根据当前的建筑配置(开发,生产)使用全局变量来定义我的应用程序的API基本路径。 这些是目前的方法:

1)

     struct ApiSettings {

     static  let API_DEV_BASEPATH = "http://dev.myapp.com"
     static  let API_PRODUCTION_BASEPATH = "http://prod.myapp.com"

    // Return the basepath for the current app runtime mode
    static var API_BASEPATH:String {

        var bPath: String!
        #if DEBUG
            bPath = API_DEV_BASEPATH
        #else
            bPath = API_PRODUCTION_BASEPATH
        #endif
        return bPath
    }
}

2)  (这里我也定义了一个临时环境)

#if DEBUG
let API_BASEPATH = "http://dev.app.com"
#elseif STAGING
let API_BASEPATH = "http://staging.app.com"
#elseif RELEASE
let API_BASEPATH = "http://production.app.com"
#endif

但是当我尝试在我的应用程序中使用API​​_BASEPATH时,编译器会抱怨"未解析的标识符"

我不确定采用哪种最优雅的解决方案。 PS。我使用的是Swift3

1 个答案:

答案 0 :(得分:1)

请试试这个。

static var API_BASEPATH:String {
        get {
            var bPath: String!
            #if DEBUG
                bPath = API_DEV_BASEPATH
            #else
                bPath = API_PRODUCTION_BASEPATH
            #endif
            return bPath
        }

    }
希望这能解决你的困惑。