Swift 4的可编码协议
在WWDC 2017上,Apple引入了一种特殊的新方法来处理应用程序开发中的重复任务:JSON处理。 到目前为止,依靠第三方库(即SwiftyJSON,JSONShootout)来完成工作是非常普遍的,但是,随着Apple新的Codable协议的引入,许多情况本来可以很好地处理。
新的Codable
协议实际上是另外两个协议的Encodable
Decodable
: Encodable
& Decodable
。 这意味着,如果您认为合理的话,您也可以决定将两者分开实施。 让我们从一个示例开始:
假设您正在从咖啡店下载菜单。 您的Coffee模型看起来像这样。 通过简单地实现上述协议,您已经免费获得了一些好东西。 通过实例化JSONEncoder
您可以轻松地将咖啡对象转换为Data.
由此,如果您从中初始化一个String
,您已经可以看到模型的JSON表示形式。
你有它。 现在,对于解码器,我们将使用编码器上的outputFormatting
属性,以演示Swift 4的另一个不错的小功能,称为多行字符串文字。
通过将编码器的outputFormatting
定义为.prettyPrinted
我们可以在控制台上很好地呈现JSON,这对于处理更复杂的对象特别有用。
现在,要从JSON数据实例化Coffee,我们将复制打印对象并粘贴到新的字符串变量中,如下所示:
请注意,通过使用此新的“多行字符串”功能,我们能够以这样的方式表示字符串,并带有换行符,而不必转义双引号。 您只需要小心正确地排列顶部和底部的三重引号,一切就可以正常工作。
从那里开始反向过程,将字符串转换为输入数据,然后使用JSONDecoder
解析代码并从中构建新的Coffee实例。 太酷了吧?