tera
1
sorry if that was already asked,
is this possible in Swift 5 to create my own custom encoder/decoder pair for arbitrary structs that confirm to Codable protocol? if there's a sample code please point me to that.
let data = MyCoder().encode(value of ArbitraryCodableType)
let object = MyDecoder().decode(ArbitraryDecodableType.self, from: data)
the specifics of ArbitraryCodableType are not known to me at the point of implementing MyCoder / MyDecoder, only the fact that it is Codable
Lantua
2
I implemented ones some time ago.
CSVCoder is probably more complete than BinaryCoder.
IMO, the important part is figuring out what for you're encoding to/decoding from.
The rest is just following the required conformance, and deciding whether you should support KeyedEn\Decoder, UnkeyedEn\Decoder, SingleValueEn\Decoder.
With that said, I see you have tagged this with json. Are you trying to convert to/from json file? If so, is there a reason you don't want to use Foundation's JSONEn/Decoder?
1 Like
tera
3
thank you for that reference, will study.
"json" is just a tag.
it is a dictionary i want to convert to/from in this instance.
later on i'm also thinking doing this for xml.
Lantua
4
There's also Foundation's JSONEn/Decoder
https://github.com/apple/swift/blob/master/stdlib/public/Darwin/Foundation/JSONEncoder.swift
which I used as a guide.
I find xml tricky as you can have attributes inside the tag, as well as content between start & finish tag, which I have trouble expressing as Codable. Though with small enough scope, that shouldn't be a problem.
1 Like
tera
5
yours is shorter :-) and easier to follow.
DictionaryCoder ought to be part of the system, IMHO.
the xml i'm looking next - is simple and under my control, i don't have to support arbitrary complex xml's.
1 Like