[swift-evolution] [Proposal] Foundation Swift Archival & Serialization

Tony Parker anthony.parker at apple.com
Mon Mar 20 12:17:16 CDT 2017

Hi Kenny,

> On Mar 19, 2017, at 9:53 PM, Kenny Leung via swift-evolution <swift-evolution at swift.org> wrote:
> Hi All.
> Forgive me if I missed it - I haven’t read the proposal in full detail - but it seems to make no mention of archiving graphs with circular references. Is this implicitly supported, or explicitly unsupported?

We expect this to be left up to the encoders and decoders. In Foundation itself, we actually have subclasses of NSCoder that support this and subclasses that do not.

> While we’re at it, my only real exposure to archiving is through Foundation, so I’d like to know how everybody else understands these terms:
> serialization - the process of “flattening” out an object graph into a serial stream of objects
> encoding - the process of converting internal object data into an external format
> archiving - the whole enchilada of serialization + encoding
> Thanks!
> -Kenny

Good question about terminology. Here is how we’ve tried to define these:

Serialization: conversion of a small fixed set of types to a data format and back
	ex. NSJSONSerialization, NSPropertyListSerialization

Encoding: conversion of an arbitrary type to a smaller set of serialized types and back
	ex: Encoder, Decoder, JSONEncoder, PropertyListEncoder

Archiver: In the ObjC Foundation, the objects which do the encoding. In this proposal we have chosen not to re-use this term to avoid confusion. Instead we tried to simplify the terminology by calling the top level concrete object an encoder.

- Tony

More information about the swift-evolution mailing list