美文网首页
iOS开发--浅入浅出环境变量(二)

iOS开发--浅入浅出环境变量(二)

作者: 番茄炒西红柿啊 | 来源:发表于2018-09-20 22:47 被阅读27次

接上篇

3.1.2 xcconfig文件的关联

创建好了配置文件,接下来就是将其和项目环境关联起来
点击工程 -> Project -> Info -> Configuration


1.png
3.1.3 xcconfig文件的编辑以及代码中对其内容的使用

这里还是以不同运行环境下服务器地址不同为例:

  • DEBUG环境对应的Config.xcconfig文件内容如下:
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) Base_Url='$(Base_Url)'
Base_Url = @"我是测试版本地址"
  • PreRelease环境对应的Config2.xcconfig文件内容如下:
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) Base_Url='$(Base_Url)'
Base_Url = @"我是预测试版本地址"
  • 两个配置文件我都定义了一个Base_Url. 第一行 GCC_PREPROCESSOR_DEFINITIONS 是固定写法,其作用是将文件里面定义的字段变成预编译的宏,这样我们在代码中就可以直接访问配置文件里面字段对应的值.
  • 代码中使用如下:
- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"%@", Base_Url);
}
  • 直接访问即可,编译器会根据当前的运行环境获取到其对应的值.妈妈再也不担心我们需要写环境判断的代码了.所以这里不同的运行环境,log打印出的base_url的值是不一样的.

3.2 如果你是swift项目

前面的所有步骤同OC项目无异.也最后一步有差异.


2.png
  • 同上.新建了2个配置文件并关联对应的运行环境后,内容分别如下:
// DebugConfig.xcconfig
Base_url = 我是测试地址
// PreReleaseConfig.xcconfig
Base_url = 我是预发布地址
  • 你会发现我并没有添加 GCC_PREPROCESSOR_DEFINITIONS, 因为swift是不支持宏编译的.所以加了也不会有效果.也就是说我们在xcconfig中添加的字段,并不能通过代码直接获取.
  • 这里我采取的是借用了系统Info.plist来访问的,如果你有更好的方法,还请不吝赐教.
  • 我在plist里面添加了一个类型为Dictionary的Config字段,如下图:


    3.png
  • 然后将配置文件中的字段迁移到Config中: 格式为 key = 字段名, value = ${字段名}, 如下图:


    4.png
  • 最后我们就能够通过代码来读取config中的内容了,代码如下:
if let info = Bundle.main.infoDictionary, let config = info["Config"] as? Dictionary<String, Any>
        {
            let base_url = config["Base_url"]
            print("\(base_url!)")
        }
  • 这样就能过根据不同的运行环境获取到不同的base_url.同OC项目效果一样,不需要再添加手动判断的代码了.当然实际项目中读取config的这一部分逻辑可以封装一下,方便在项目中使用和查看.这里不做示范.

至此,文章over !!

相关文章

网友评论

      本文标题:iOS开发--浅入浅出环境变量(二)

      本文链接:https://www.haomeiwen.com/subject/gsronftx.html