使用Swift对Info.plist文件进行强类型访问

作为Apple的开发人员,随着Swift的出现,我们开始在代码中面临类型安全约束。

从我的角度来看,我一直试图完全采用这种方法,即使这通常意味着要处理UIKit的多个部分,这些部分显然是根据不同的(更动态的)范式创建的。
有时候很容易,有些则更少,但是他们仍然是一个很好的练习,可以跳出框框思考,以使我们的代码更安全,更干净。

最近,我重新面对了一个表面上琐碎的任务。 我将读取应用程序的Info.plist文件中保存的应用程序的配置。

我的Info.plist包含一个名为configuration的附加节点,其中包含多个数据: server_urlenvironment_name和其他一系列键。

值是动态的,并根据您为启动应用程序而设置的当前模式分配(即$(SERVER_URL)是具有值或取决于配置环境(如TESTING/PRODUCTION )的值的url服务器)。

目的是通过保留数据类型来获取这些值。
最直接的方法是使用Codable协议背后的Codable (本文与Codable ,您可以在此处,此处或此处找到大量文章。

代码非常简单,您只需指定一个Codable结构即可处理您感兴趣的数据,然后为该Plist类分配泛型类型。

在我们的示例数据中,我们可以提供以下结构:

然后:

您可以使用该类本身来读取Info.plist以外的所有其他文件; 只需传递.plist("otherPListFile")作为init参数并提供您自己的Codable结构即可。