Tag: 编码器

带有Encoder和Encodable的JSON

Swift 4带来了一种更加原生的方式来编码和解码实例,并内置了对每个人最喜欢的基于文本的格式的支持:JSON! 我们不使用所有的编码和解码源代码,而是采用一种不同的方法,并逐步通过一个简单的示例:单个Int实例如何通过JSONEncoder变成JSON数据? 从那里,我们应该能够更进一步,了解其他原始类型,数组,字典等是如何编码的。 封存 NSCoding作为Cocoa的一部分已经存储和检索数据很长时间了。 令人振奋的消息是,由于NSKeyedArchiver已有15年的历史了,Apple终于宣布弃用NSArchiver 。 😜 一个好主意是,如果可以对诸如字符串和数字之类的单个实例进行编码和解码 ,则可以存档和取消存档整个对象图。 编码所有事物 在Swift标准库中,除了编码 器之外,还有一些可编码的东西。 可编码是一种协议。 符合类型可以将自身编码为其他表示形式。 编码器也是一种协议。 编码器负责将可Encodable内容转换为其他格式,例如JSON或XML。 Encodable类似于NSCoding但作为Swift协议,您的Swift结构和枚举也可以加入聚会。 类似地,尽管Encoder还是协议而不是抽象类,但它与NSCoder对应。 一个简单的整数 您不能使用JSONEncoder编码裸标量,而是需要顶级数组或字典。 为简单起见,让我们从编码包含单个整数[42]的数组开始。 let encoder = JSONEncoder() let jsonData = try! encoder.encode([42]) 首先,我们实例化JSONEncoder ,然后使用数组在其上调用encode() 。 那里发生了什么事? // JSONEncoder.swift open func encode(_ value: T) throws -> Data { let encoder = _JSONEncoder(options: self.options) encode()方法采用一些Encodable值,并返回原始JSON Data 。 […]