使用Swift对Info.plist文件进行强类型访问
作为Apple的开发人员,随着Swift的出现,我们开始在代码中面临类型安全约束。
从我的角度来看,我一直试图完全采用这种方法,即使这通常意味着要处理UIKit的多个部分,这些部分显然是根据不同的(更动态的)范式创建的。
有时候很容易,有些则更少,但是他们仍然是一个很好的练习,可以跳出框框思考,以使我们的代码更安全,更干净。
最近,我重新面对了一个表面上琐碎的任务。 我将读取应用程序的Info.plist
文件中保存的应用程序的配置。
我的Info.plist
包含一个名为configuration
的附加节点,其中包含多个数据: server_url
, environment_name
和其他一系列键。
值是动态的,并根据您为启动应用程序而设置的当前模式分配(即$(SERVER_URL)
是具有值或取决于配置环境(如TESTING/PRODUCTION
)的值的url服务器)。
目的是通过保留数据类型来获取这些值。
最直接的方法是使用Codable
协议背后的Codable
(本文与Codable
,您可以在此处,此处或此处找到大量文章。
代码非常简单,您只需指定一个Codable
结构即可处理您感兴趣的数据,然后为该Plist
类分配泛型类型。
在我们的示例数据中,我们可以提供以下结构:
然后:
您可以使用该类本身来读取Info.plist
以外的所有其他文件; 只需传递.plist("otherPListFile")
作为init参数并提供您自己的Codable
结构即可。