KeyedDecodingContainerProtocol

protocol KeyedDecodingContainerProtocol

A type that provides a view into a decoder's storage and is used to hold the encoded properties of a decodable type in a keyed manner.

Decoders should provide types conforming to UnkeyedDecodingContainer for their format.

Inheritance View Protocol Hierarchy →
Associated Types
Key : CodingKey
Import import Swift

Instance Variables

var allKeys: [Self.Key] Required

All the keys the Decoder has for this container.

Different keyed containers from the same Decoder may return different keys here; it is possible to encode with multiple key types which are not convertible to one another. This should report all keys present which are convertible to the requested type.

Declaration

var allKeys: [Self.Key] { get }
var codingPath: [CodingKey] Required

The path of coding keys taken to get to this point in decoding.

Declaration

var codingPath: [CodingKey] { get }

Instance Methods

func contains(_:) Required

Returns a Boolean value indicating whether the decoder contains a value associated with the given key.

The value associated with key may be a null value as appropriate for the data format.

key: The key to search for. returns: Whether the Decoder has an entry for the given key.

Declaration

func contains(_ key: Self.Key) -> Bool
func decode(_: Bool.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: Bool.Type, forKey key: Self.Key) throws -> Bool
func decode(_: Double.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: Double.Type, forKey key: Self.Key) throws -> Double
func decode(_: Float.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: Float.Type, forKey key: Self.Key) throws -> Float
func decode(_: Int.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: Int.Type, forKey key: Self.Key) throws -> Int
func decode(_: Int8.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: Int8.Type, forKey key: Self.Key) throws -> Int8
func decode(_: Int16.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: Int16.Type, forKey key: Self.Key) throws -> Int16
func decode(_: Int32.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: Int32.Type, forKey key: Self.Key) throws -> Int32
func decode(_: Int64.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: Int64.Type, forKey key: Self.Key) throws -> Int64
func decode(_: String.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: String.Type, forKey key: Self.Key) throws -> String
func decode(_: UInt.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: UInt.Type, forKey key: Self.Key) throws -> UInt
func decode(_: UInt8.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: UInt8.Type, forKey key: Self.Key) throws -> UInt8
func decode(_: UInt16.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: UInt16.Type, forKey key: Self.Key) throws -> UInt16
func decode(_: UInt32.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: UInt32.Type, forKey key: Self.Key) throws -> UInt32
func decode(_: UInt64.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode(_ type: UInt64.Type, forKey key: Self.Key) throws -> UInt64
func decode<T>(_: T.Type, forKey: Self.Key) Required

Decodes a value of the given type for the given key.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A value of the requested type, if present for the given key and convertible to the requested type. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type. throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func decode<T>(_ type: T.Type, forKey key: Self.Key) throws -> T where T : Decodable
func decodeIfPresent(_: Bool.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: Bool.Type, forKey key: Self.Key) throws -> Bool?
func decodeIfPresent(_: Double.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: Double.Type, forKey key: Self.Key) throws -> Double?
func decodeIfPresent(_: Float.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: Float.Type, forKey key: Self.Key) throws -> Float?
func decodeIfPresent(_: Int.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: Int.Type, forKey key: Self.Key) throws -> Int?
func decodeIfPresent(_: Int8.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: Int8.Type, forKey key: Self.Key) throws -> Int8?
func decodeIfPresent(_: Int16.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: Int16.Type, forKey key: Self.Key) throws -> Int16?
func decodeIfPresent(_: Int32.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: Int32.Type, forKey key: Self.Key) throws -> Int32?
func decodeIfPresent(_: Int64.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: Int64.Type, forKey key: Self.Key) throws -> Int64?
func decodeIfPresent(_: String.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: String.Type, forKey key: Self.Key) throws -> String?
func decodeIfPresent(_: UInt.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: UInt.Type, forKey key: Self.Key) throws -> UInt?
func decodeIfPresent(_: UInt8.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: UInt8.Type, forKey key: Self.Key) throws -> UInt8?
func decodeIfPresent(_: UInt16.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: UInt16.Type, forKey key: Self.Key) throws -> UInt16?
func decodeIfPresent(_: UInt32.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: UInt32.Type, forKey key: Self.Key) throws -> UInt32?
func decodeIfPresent(_: UInt64.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent(_ type: UInt64.Type, forKey key: Self.Key) throws -> UInt64?
func decodeIfPresent<T>(_: T.Type, forKey: Self.Key)

Decodes a value of the given type for the given key, if present.

This method returns nil if the container does not have a value associated with key, or if the value is null. The difference between these states can be distinguished with a contains(_:) call.

type: The type of value to decode.

key: The key that the decoded value is associated with. returns: A decoded value of the requested type, or nil if the Decoder does not have an entry associated with the given key, or if the value is a null value. throws: DecodingError.typeMismatch if the encountered encoded value is not convertible to the requested type.

Declaration

func decodeIfPresent<T>(_ type: T.Type, forKey key: Self.Key) throws -> T? where T : Decodable
func decodeNil(forKey:) Required

Decodes a null value for the given key.

key: The key that the decoded value is associated with. returns: Whether the encountered value was null. throws: DecodingError.keyNotFound if self does not have an entry for the given key.

Declaration

func decodeNil(forKey key: Self.Key) throws -> Bool
func nestedContainer(keyedBy:forKey:) Required

Returns the data stored for the given key as represented in a container keyed by the given key type.

type: The key type to use for the container.

key: The key that the nested container is associated with. returns: A keyed decoding container view into self. throws: DecodingError.typeMismatch if the encountered stored value is not a keyed container.

Declaration

func nestedContainer<NestedKey>(keyedBy type: NestedKey.Type, forKey key: Self.Key) throws -> KeyedDecodingContainer<NestedKey> where NestedKey : CodingKey
func nestedUnkeyedContainer(forKey:) Required

Returns the data stored for the given key as represented in an unkeyed container.

key: The key that the nested container is associated with. returns: An unkeyed decoding container view into self. throws: DecodingError.typeMismatch if the encountered stored value is not an unkeyed container.

Declaration

func nestedUnkeyedContainer(forKey key: Self.Key) throws -> UnkeyedDecodingContainer
func superDecoder() Required

Returns a Decoder instance for decoding super from the container associated with the default super key.

Equivalent to calling superDecoder(forKey:) with Key(stringValue: "super", intValue: 0).

returns: A new Decoder to pass to super.init(from:). throws: DecodingError.keyNotFound if self does not have an entry for the default super key. throws: DecodingError.valueNotFound if self has a null entry for the default super key.

Declaration

func superDecoder() throws -> Decoder
func superDecoder(forKey:) Required

Returns a Decoder instance for decoding super from the container associated with the given key.

key: The key to decode super for. returns: A new Decoder to pass to super.init(from:). throws: DecodingError.keyNotFound if self does not have an entry for the given key. throws: DecodingError.valueNotFound if self has a null entry for the given key.

Declaration

func superDecoder(forKey key: Self.Key) throws -> Decoder

Default Implementations

func decodeIfPresent(_: Bool.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: Bool.Type, forKey key: Self.Key) throws -> Bool?
func decodeIfPresent(_: Double.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: Double.Type, forKey key: Self.Key) throws -> Double?
func decodeIfPresent(_: Float.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: Float.Type, forKey key: Self.Key) throws -> Float?
func decodeIfPresent(_: Int.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: Int.Type, forKey key: Self.Key) throws -> Int?
func decodeIfPresent(_: Int8.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: Int8.Type, forKey key: Self.Key) throws -> Int8?
func decodeIfPresent(_: Int16.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: Int16.Type, forKey key: Self.Key) throws -> Int16?
func decodeIfPresent(_: Int32.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: Int32.Type, forKey key: Self.Key) throws -> Int32?
func decodeIfPresent(_: Int64.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: Int64.Type, forKey key: Self.Key) throws -> Int64?
func decodeIfPresent(_: String.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: String.Type, forKey key: Self.Key) throws -> String?
func decodeIfPresent(_: UInt.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: UInt.Type, forKey key: Self.Key) throws -> UInt?
func decodeIfPresent(_: UInt8.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: UInt8.Type, forKey key: Self.Key) throws -> UInt8?
func decodeIfPresent(_: UInt16.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: UInt16.Type, forKey key: Self.Key) throws -> UInt16?
func decodeIfPresent(_: UInt32.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: UInt32.Type, forKey key: Self.Key) throws -> UInt32?
func decodeIfPresent(_: UInt64.Type, forKey: Self.Key)

Declaration

func decodeIfPresent(_ type: UInt64.Type, forKey key: Self.Key) throws -> UInt64?
func decodeIfPresent<T>(_: T.Type, forKey: Self.Key)

Declaration

func decodeIfPresent<T>(_ type: T.Type, forKey key: Self.Key) throws -> T? where T : Decodable