Пожалуйста, научитесь понимать сообщения об ошибках декодирования, они очень наглядны.
Ошибка говорит о том, что вы собираетесь декодировать массив, но фактическим объектом является словарь (целевая структура).
Сначала взгляните на начало JSON
{
"copyright" : "NHL and the NHL Shield are registered trademarks of the National Hockey League. NHL and NHL team marks are the property of the NHL and its teams. © NHL 2018. All Rights Reserved.",
"totalItems" : 2,
"totalEvents" : 0,
"totalGames" : 2,
"totalMatches" : 0,
"wait" : 10,
"dates" : [ {
"date" : "2018-05-04",
Он начинается с {
, который является словарем (массив [
), но вы хотите декодировать массив ([Dates]
), это несоответствие типов, на которое ссылается сообщение об ошибке.
Но это только половина решения. После изменения строки на try decoder.decode(Dates.self
вы получите еще одну ошибку, в которой нет значения для ключа copyright
.
Посмотрите еще раз на JSON и сравните ключи с членами структуры. Структура, члены которой соответствуют ключам JSON, равна Initial
, и вы должны получить массив dates
для заполнения gameData
.
let jsondata = try decoder.decode(Initial.self, from: detailData)
gameData = jsondata.dates