Параметр from
для decode
должен быть Data
, а не String
, это сообщение об ошибке. Буквальная строка даты как JSON data в любом случае не имеет смысла. Невозможно составить имена переменных во время выполнения.
Что вы можете сделать, это
let month = Calendar.current.component(.month, from: Date())
let data : Data
switch month {
case 1: data = Data(JanMoonData.utf8)
case 2: data = Data(FebMoonData.utf8)
// ...
}
let moonphase = try! JSONDecoder().decode([MoonPhase].self, from: data)
или
let month = Calendar.current.component(.month, from: Date())
let moonJSON : String
switch month {
case 1: moonJSON = JanMoonData
case 2: moonJSON = FebMoonData
// ...
}
let moonphase = try! JSONDecoder().decode([MoonPhase].self, from: Data(moonJSON.utf8)
или
let moonJSONArray = [JanMoonData, FebMoonData, MarMoonData, ..., DecMoonData]
let month = Calendar.current.component(.month, from: Date())
let moonJSON = moonJSONArray[month - 1]
let moonphase = try! JSONDecoder().decode([MoonPhase].self, from: Data(moonJSON.utf8)