【问题标题】:How do I select a specific id from a JSON file in swift?如何快速从 JSON 文件中选择特定 ID?
【发布时间】:2021-03-12 02:28:26
【问题描述】:

我正在尝试仅选择我的 JSON 文件中的一个条目,并且正在努力这样做。到目前为止,这是我的代码的列表部分:

    var body: some View {
        
        NavigationView {
            Group {
                List {
                    ForEach(regions) { regions in
                   NavigationLink(destination: RegionsListView(regions: regions)) {
                       RegionButtonView(regions: regions)
                   }
              }
        }
            }
        }
        }

这里是if statement

    let regions: Region
    
    var body: some View {
        if regions.id != nil {
            SCaliView()
        } else if regions.id != nil {
            BAView()
        }
    }
}
struct Region: Codable, Identifiable {
    let id: Int
    let name: String
    let image: String

}

我想让它在选择某个id时,它会转到某个视图。

【问题讨论】:

  • 什么是区域?它是如何初始化的?
  • 您在两个单独的布尔值上运行 if 语句,两者都可能是真或假,并且根据您只想显示一个的陈述,我敢肯定这是'正确的实施。尝试使不同的视图成为同一个 Bool 的一部分
  • 但是我要怎么做才能选择一个特定的id?因为我总共有 7 个 id,这将有 7 个不同的视图。我会使用哪一行代码? @SergioBost
  • @yvngbucky 我刚刚发布了一些应该可以帮助您的内容,但是您必须集中所有 ID,以便您可以在单个 switch 语句中使用它们,就像在答案中一样

标签: json swift swiftui decodable


【解决方案1】:

您可以在使用 ViewBuilder 的情况下直接抛出您想要的任何类型的视图。文本视图,嵌套堆栈虽然它有点清晰传递预先构建的视图。只需将 Int 替换为您的 id 类型,尽管 Int 应该可以工作,然后修改 case 语句以处理您的不同 id

 @ViewBuilder func jsonSelector(using id: Int) -> some View {
      switch id {
         case 0:
      ViewA()
         case 1: 
      ViewB()
         case 2: 
      ViewC()
         case 3: 
      ViewD()


     }

}

然后把它扔到你的视野里

jsonSelector(using: myID)

如果您添加一些代码,我将编辑答案以适合您的用例,但这是一般修复

【讨论】:

  • 很高兴它有帮助。请点击检查按钮。尝试升级:)
猜你喜欢
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多