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