Swift 4的可编码协议

在WWDC 2017上,Apple引入了一种特殊的新方法来处理应用程序开发中的重复任务:JSON处理。 到目前为止,依靠第三方库(即SwiftyJSON,JSONShootout)来完成工作是非常普遍的,但是,随着Apple新的Codable协议的引入,许多情况本来可以很好地处理。

新的Codable协议实际上是另外两个协议的Encodable DecodableEncodableDecodable 。 这意味着,如果您认为合理的话,您也可以决定将两者分开实施。 让我们从一个示例开始:

假设您正在从咖啡店下载菜单。 您的Coffee模型看起来像这样。 通过简单地实现上述协议,您已经免费获得了一些好东西。 通过实例化JSONEncoder您可以轻松地将咖啡对象转换为Data. 由此,如果您从中初始化一个String ,您已经可以看到模型的JSON表示形式。

你有它。 现在,对于解码器,我们将使用编码器上的outputFormatting属性,以演示Swift 4的另一个不错的小功能,称为多行字符串文字。

通过将编码器的outputFormatting定义为.prettyPrinted我们可以在控制台上很好地呈现JSON,这对于处理更复杂的对象特别有用。

现在,要从JSON数据实例化Coffee,我们将复制打印对象并粘贴到新的字符串变量中,如下所示:

请注意,通过使用此新的“多行字符串”功能,我们能够以这样的方式表示字符串,并带有换行符,而不必转义双引号。 您只需要小心正确地排列顶部和底部的三重引号,一切就可以正常工作。

从那里开始反向过程,将字符串转换为输入数据,然后使用JSONDecoder解析代码并从中构建新的Coffee实例。 太酷了吧?