Structure
CodableConfiguration
@propertyWrapper struct CodableConfiguration<T, ConfigurationProvider> where T : DecodableWithConfiguration, T : EncodableWithConfiguration, ConfigurationProvider : DecodingConfigurationProviding, ConfigurationProvider : EncodingConfigurationProviding, T.DecodingConfiguration == ConfigurationProvider.DecodingConfiguration, T.EncodingConfiguration == ConfigurationProvider.EncodingConfiguration
Overview
CodableConfiguration allows you to create doc://com.apple.documentation/documentation/swift/codable types whose members don’t all conform to doc://com.apple.documentation/documentation/swift/codable. For types that can’t support encoding and decoding by themselves but could become encodable and decodable with some statically-defined information, use the @CodableConfiguration wrapper. This lets you assign a configuration provider — a type that conforms to both EncodingConfigurationProviding and DecodingConfigurationProviding — to supply this data.
Limiting the CodableConfiguration to statically-defined information protects clients from loading unexpected data, similar to the protection provided by NSSecureCoding.
In the following example, the Message type uses @CodableConfiguration for an AttributedString property called content. While AttributedString does conform to doc://com.apple.documentation/documentation/swift/codable, it can only encode its known attributes — those declared by the platform SDK — as part of this conformance. By adding a CodableConfiguration for the custom MyAttributes type, Message uses encode(to:configuration:) when encoding content, which preserves the custom attributes.
struct Message: Codable {
let date: Date
let sender: Person
@CodableConfiguration(from: MyAttributes.self) var content = AttributedString()
}
Topics
Initializers
init(from: any Decoder) throwsinit(wrappedValue: T)Creates a codable configuration wrapper for the given value.init(wrappedValue:from:)Creates a codable configuration wrapper for the given value, using the given configuration provider type.
Instance Properties
var wrappedValue: TThe underlying value to make codable, using data from the configuration provider.
Instance Methods
Relationships
Conforms To
Swift.DecodableSwift.EncodableSwift.EquatableSwift.HashableSwift.SendableSwift.SendableMetatype