I'm using Decodable
in order to decode some JSON, all properties on this struct have the same structure it's just the JSON contains them in multiple arrays. The code works until I add another property let all = Mirror(reflecting: Sizes.self).children
. I'm using this in order to get all the properties so I can loop over the struct to actually injest the data.
The issue I'm having is that when I store all
as a constant, the code will not compile and gives me the following error:
Type 'Sizes' does not conform to protocol 'Decodable'
struct SizeJSON: Decodable {
var name: String
var width: Double
var height: Double
}
struct Sizes: Decodable {
let small: [SizeJSON]
let medium: [SizeJSON]
let large: [SizeJSON]
let all = Mirror(reflecting: Sizes.self).children
}
Mirror
's init(reflecting:) initializer needs to pass an instance of your type to work.You can accomplish what you are trying using a lazy variable, like this:
That way you can both have access to
self
instance and avoid forall
property to be decoded.