от
Я присвоил переменной в JSON-ответ, который является массивом. Проблема я не могу открыть его позже, потому что он говорит, что это не имеет индексов. У меня есть доступ к исходной переменной(константы, на самом деле), чтобы получить информацию, мне нужно от ответа. Надеюсь, код будет понятнее.
let data = (try? Data(contentsOf: URL(fileURLWithPath: path!), options: .mappedIfSafe))
        do {
            // data we are getting from network request
            let decoder = JSONDecoder()
            let response = try decoder.decode(Recipes.self, from: data!)

            let recipes = response.recipe

for (index, recipes) in recipes.enumerated(){
        //This prints the info ok!
                print(response.recipe[index].name)
                print(response.recipe[index].nutrients.protein)
                print(response.recipe[index].steps[2])

//This does't and it says it has no subscripts!
                print(recipes[index].name)
                print(recipes[index].nutrients.protein)
                print(recipes[index].steps[2])
}
  } catch { print(error) }
Ошибка: значение типа recipe '' не имеет подстрочные

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.

1 Ответ

0 голосов
от
Прежде всего назовите, пожалуйста, пункт в цикле
for
всегда в единственном виде, чтобы избежать путаницы и ошибок (название элемента переменной цикла скрывает то же имя переменной массива).
for (index, recipe) in recipes.enumerated() { ...
затем линии
print(recipes[index].name)
будет работать. Однако можно написать проще
print(recipe.name)
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...