Class

NSKeyedArchiver

An encoder that stores an object’s data to an archive referenced by keys.

Declaration

@interface NSKeyedArchiver : NSCoder

Overview

NSKeyedArchiver, a concrete subclass of NSCoder, provides a way to encode objects (and scalar values) into an architecture-independent suitable for storage in a file. When you archive a set of objects, the archiver writes the class information and instance variables for each object to the archive. The companion class NSKeyedUnarchiver decodes the data in an archive and creates a set of objects equivalent to the original set.

A keyed archive differs from a non-keyed archive in that all the objects and values encoded into the archive have names, or keys. When decoding a non-keyed archive, the decoder must decode values in the same order the original encoder used. When decoding a keyed archive, the decoder requests values by name, meaning it can decode values out of sequence or not at all. Keyed archives, therefore, provide better support for forward and backward compatibility.

The keys given to encoded values must be unique only within the scope of the currently-encoding object. A keyed archive is hierarchical, so the keys used by object A to encode its instance variables don’t conflict with the keys used by object B. This is true even if A and B are instances of the same class. Within a single object, however, the keys used by a subclass can conflict with keys used in its superclasses.

An NSArchiver object can write the archive data to a file or to a mutable-data object (an instance of NSMutableData) that you provide.

Topics

Creating a Keyed Archiver

- initRequiringSecureCoding:

Creates an archiver to encode data, and optionally disables secure coding.

- init

Initializes an archiver to encode data.

Deprecated
- initForWritingWithMutableData:

Initializes an archiver to encode data into a given a mutable-data object.

Deprecated

Archiving Data

+ archivedDataWithRootObject:requiringSecureCoding:error:

Encodes an object graph with the given root object into a data representation, optionally requiring secure coding.

- finishEncoding

Instructs the receiver to construct the final data stream.

encodedData

The encoded data for the archiver.

outputFormat

The format in which the receiver encodes its data.

requiresSecureCoding

Indicates whether the archiver requires all archived classes to resist object substitution attacks.

+ archivedDataWithRootObject:

Returns a data object that contains the encoded form of the object graph formed by the given root object.

Deprecated
+ archiveRootObject:toFile:

Archives an object graph rooted at a given object to a file at a given path.

Deprecated

Encoding Data and Objects

- encodeBool:forKey:

Encodes a given Boolean value and associates it with a key.

- encodeBytes:length:forKey:

Encodes a given number of bytes from a given C array of bytes and associates them with a key.

- encodeConditionalObject:forKey:

Encodes a reference to a given object and associates it with a key only if it has been unconditionally encoded elsewhere in the archive.

- encodeDouble:forKey:

Encodes a given double value and associates it with a key.

- encodeFloat:forKey:

Encodes a given float value and associates it with a key.

- encodeInt:forKey:

Encodes a given int value and associates it with a key.

- encodeInt32:forKey:

Encodes a given 32-bit integer value and associates it with a key.

- encodeInt64:forKey:

Encodes a given 64-bit integer value and associates it with a key.

- encodeObject:forKey:

Encodes a given object and associates it with a given key.

Managing the Delegate

delegate

The archiver’s delegate.

Managing Classes and Class Names

+ setClassName:forClass:

Sets a global translation mapping to encode instances of a given class with the provided name, rather than their real name.

+ classNameForClass:

Returns the class name with which the archiver class encodes instances of a given class.

- setClassName:forClass:

Sets a mapping for this archiver to encode instances of a given class with the provided name, rather than their real name.

- classNameForClass:

Returns the class name with which this archiver encodes instances of a given class.

Constants

Keyed Archiving Exception Names

Names of exceptions raised by this class if problems occur while creating an archive.

Keyed Archiver Root Object Key

Keys that the archiver uses in the hierarchy of encoded objects.

Relationships

Inherits From

See Also

Keyed Archivers

NSKeyedArchiverDelegate

The optional methods implemented by the delegate of a keyed archiver.

NSKeyedUnarchiver

A decoder that restores data from an archive referenced by keys.

NSKeyedUnarchiverDelegate

The optional methods implemented by the delegate of a keyed unarchiver.

NSCoder

An abstract class that serves as the basis for objects that enable archiving and distribution of other objects.

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software