This episode is for subscribers only. To access it, and all past and future episodes, become a subscriber today!See subscription optionsorLog in
Sign up for our weekly newsletter to be notified of new episodes, and unlock access to any subscriber-only episode of your choosing!Sign up for free episode
We skipped over the
allKeys property of the
KeyedDecodingContainerProtocol, but it’s what’s necessary to decode dictionaries of values. On initialization of the
KeyedDecodingContainer, generate a random number of random
CodingKeys to populate this property.
You’ll need to return
contains(_ key: Key).
Decode a few random dictionaries of various decodable keys and values. What are some of the limitations of decoding dictionaries?
Create a new
UnkeyedContainer struct that conforms to the
UnkeyedContainerProtocol and return it from the
unkeyedContainer() method of
ArbitraryDecoder. As with the
KeyedDecodingContainer, you can delete the same
decode methods and have them delegate to the
count property can be used to generate a randomly-sized container, while
isAtEnd can be used to let the decoder know how far along it is. Generate a random
count, default the
0, and define
isAtEnd as a computed property using these values. The
currentIndex property should increment whenever
superDecoder is called.
Decode a few random arrays of various decodable elements.