Даже если rawValue
для GIFFormat
равно String
, GIFFormat
само по себе является перечислением. Вы должны обновить
let collection = try decoder.decode([[GIFFormat:Media]].self, from: data)
до
let collection = try decoder.decode([[GIFFormat.RawValue:Media]].self, from: data)
ОБНОВЛЕНИЕ: В ответ на ваш комментарий
Теперь для доступа к значению мне нужно использовать вот так,
collection?.first?[GIFFormat.mp4.rawValue]?.url
. Что опять-таки безобразно
!!
Я бы предложил немного рефакторинга. Вы можете начать с удаления вашего enum
в целом. Сохраняйте свою Media
структуру. Создайте новую Collection
struct
struct Collection: Decodable {
let nanomp4: Media!
let nanowebm: Media!
}
Затем вы можете обновить вышеприведенную строку до
let collection = try decoder.decode([Collection].self, from: data)
и ваша безобразная строка преобразуется в
collection.first?.nanomp4.url
ПРИМЕЧАНИЕ: В этом решении предполагается, что в качестве значений перечисления у вас есть только nanomp4
& nanowebm
. Если это не так, то это может быть не лучшее решение, и вам, возможно, придется использовать первое решение.