分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Mihai HG

为什么我不能将JSON响应分配给一个变量供以后使用? - Why can't I assign a JSON response to a variable for using later?

  •  -1
  • Mihai HG  · 技术社区  · 1 周前

    我给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 回复  |  直到 1 周前
        1
  •  1
  •   vadian    1 周前

    首先,请在 for 循环始终采用单数形式,以避免混淆和错误(循环元素变量的名称隐藏了 相同的 数组变量的名称)。

    for (index, recipe) in recipes.enumerated() { ...
    

    然后排队

    print(recipes[index].name)
    

    会有用的。但是你可以写得更简单

    print(recipe.name)