Dictionary 如何在SwiftUI中筛选多个列表视图

Dictionary 如何在SwiftUI中筛选多个列表视图,dictionary,swiftui,swiftui-list,swiftui-navigationlink,Dictionary,Swiftui,Swiftui List,Swiftui Navigationlink,我不熟悉编码,一直在尝试使用SwiftUI构建我的第一个iPhone应用程序,所以请原谅我的问题的幼稚和代码中的任何错误。 我已经成功解析了json文件中的数据,并且能够在2个列表视图和最终的详细视图中显示数据。我现在正在尝试筛选3个列表,以便在第一个列表中不重复汽车的品牌,在第二个列表中不重复相应汽车的型号,在第三个列表中不重复相应汽车的徽章 如果问题太宽泛,我表示歉意,我也很感激有很多方法可以完成我想做的事情。如果能为我推荐的资源指出正确的方向,我将不胜感激,这样我就可以更好地理解这种类型的

我不熟悉编码,一直在尝试使用SwiftUI构建我的第一个iPhone应用程序,所以请原谅我的问题的幼稚和代码中的任何错误。 我已经成功解析了json文件中的数据,并且能够在2个列表视图和最终的详细视图中显示数据。我现在正在尝试筛选3个列表,以便在第一个列表中不重复汽车的品牌,在第二个列表中不重复相应汽车的型号,在第三个列表中不重复相应汽车的徽章

如果问题太宽泛,我表示歉意,我也很感激有很多方法可以完成我想做的事情。如果能为我推荐的资源指出正确的方向,我将不胜感激,这样我就可以更好地理解这种类型的数据管理

谢谢

JSON片段

    [
  {
    "id": 1,
    "make": "Alfa Romeo",
    "model": "147",
    "badge": "Twin Spark",
    "series": null,
    "year": 2004,
    "fuel": "Petrol",
    "driveType": "2WD",
    "bodyType": "Small Hatch",
    "transmission": "Automatic",
    "manualDeduction": -250,
    "subtraction1": null,
    "subtraction1Difference": 0,
    "add1": "Sunroof",
    "add1Difference": 250,
    "add2": null,
    "add2Difference": 0,
    "add3": null,
    "add3Difference": 0,
    "add4": null,
    "add4Differnece": 0,
    "avgAnnualKms": 15000,
    "age": 16,
    "averageKmsForYear": 240000,
    "priceWhenNew": 0,
    "depreciationForKms": 0,
    "algorithmValuation": 0,
    "valuerValuation": 500,
    "valo": 500,
    "logoName": "Alfa"
  },
  {
    "id": 2,
    "make": "Alfa Romeo",
    "model": "156",
    "badge": "JTS",
    "series": null,
    "year": 2004,
    "fuel": "Petrol",
    "driveType": "2WD",
    "bodyType": "Sedan",
    "transmission": "Automatic",
    "manualDeduction": -250,
    "subtraction1": null,
    "subtraction1Difference": 0,
    "add1": "Sunroof",
    "add1Difference": 250,
    "add2": null,
    "add2Difference": 0,
    "add3": null,
    "add3Difference": 0,
    "add4": null,
    "add4Differnece": 0,
    "avgAnnualKms": 15000,
    "age": 16,
    "averageKmsForYear": 240000,
    "priceWhenNew": 0,
    "depreciationForKms": 0,
    "algorithmValuation": 0,
    "valuerValuation": 1000,
    "valo": 1000,
    "logoName": "Alfa"
  },
数据:

MakeCarView视图

   import SwiftUI

struct MakeCarView: View {
    var body: some View {
        NavigationView{
            List(JsonParse()) { car in
                MakeCellRow(car: car)
            }.navigationTitle("Make")
        }
    }
}
struct MakeCellRow: View {
    var car: VehicleData
    var body: some View {
        HStack {
            NavigationLink(destination: ModelView()) {
                Image(car.logoName)
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: 60, height: 60, alignment: .center)
                    .padding()
                Text(car.make)
                    .font(.title2)
            }
            .background(Color("card color"))
            .cornerRadius(15)
            .shadow(color: Color.black.opacity(0.25), radius: 3, x: 0, y: 0)
        }
    }
}
struct MakeCarViewsPreview: PreviewProvider {
    static var previews: some View {
        Group {
            MakeCarView()
        }
    }
}

听起来您只想显示唯一的值。这可以通过多种方式实现,具体取决于存储的工作方式。如果这是您所拥有的全部,而您没有数据库功能,则可能是一个存储正在显示的值的数组,如果该值已在该列表中,则不要再生成另一行。
   import SwiftUI

struct MakeCarView: View {
    var body: some View {
        NavigationView{
            List(JsonParse()) { car in
                MakeCellRow(car: car)
            }.navigationTitle("Make")
        }
    }
}
struct MakeCellRow: View {
    var car: VehicleData
    var body: some View {
        HStack {
            NavigationLink(destination: ModelView()) {
                Image(car.logoName)
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: 60, height: 60, alignment: .center)
                    .padding()
                Text(car.make)
                    .font(.title2)
            }
            .background(Color("card color"))
            .cornerRadius(15)
            .shadow(color: Color.black.opacity(0.25), radius: 3, x: 0, y: 0)
        }
    }
}
struct MakeCarViewsPreview: PreviewProvider {
    static var previews: some View {
        Group {
            MakeCarView()
        }
    }
}