Я пытаюсь отобразить группу разделов в списке SwiftUI.
Ниже мой код
Файл ContentView.Swift структура ContentView: Просмотр { @EnvironmentObject var appData: FoodItemData Имя частной переменной @State: String = "" var body: some View { Список() { ВСтек { ForEach(returnGroupdDate(dataa: $appData.userData)) {$product в Раздел(заголовок: Текст(product.countryName).font(.title).foregroundColor(.red)) { HStack(выравнивание: .top) { Изображение(product.foodImage).resizable() .scaledToFit() .frame(ширина: 100, высота: 100) VStack(выравнивание: .leading, интервал: 2){ Текст(product.foodName).font(.title3) Разделитель() Text("рупий \(product.foodPrice)").font(.title3).padding(.bottom) Текст("Кал. \(product.foodCalories)").font(.title3) }.padding(.top, 5) VStack(выравнивание: .leading, интервал: 5) { Image(systemName: product.isSelected? "checkmark.square": "square").onTapGesture { продукт.isSelected.toggle() }.imageScale(.large) Разделитель() Image(systemName: product.isFavourited? "heart.fill": "heart").onTapGesture { Product.isFavourited.toggle() }.imageScale(.large) } Разделитель() } Разделитель() } } .padding() Разделитель() } } } func returnGroupdDate(dataa: FoodItemData) -> [String: [FoodItemsViewModel]] { let StudentByLetter = Dictionary (группировка: appData.userData, by: { $0.foodName }) } } структура ContentView_Previews: PreviewProvider { статические предварительные просмотры var: some View { ContentView().environmentObject(FoodItemData()) } } структура CheckBoxView: Просмотр { @Binding var проверено: Bool var body: some View { Изображение (имя системы: отмечено? «checkmark.square.fill»: «квадрат») .foregroundColor(проверено? Цвет(UIColor.systemBlue): Color.вторичный) .onTapGesture { self.checked.toggle() } } } func groupByCategory(_ items: [FoodItems]) -> [(String, [FoodItems])] { let grouped = Dictionary (группировка: элементы, по: { $0.foodName }) return grouped.sorted(by: { $0.key < $1.ключ }) } Файл FoodItemData.Swift импортный фонд структура FoodItems: Hashable { var foodName: String var CountryName: String вар едаЦена: двойная вар едаКалории: Int var foodImage: String вар isSelected: Bool вар isFavourites: Bool } struct FoodItemsViewModel: Идентифицируемый, Хешируемый { пусть идентификатор = UUID() вар foodItems: FoodItems вар foodName: String { вернуть foodItems.foodName.с заглавной буквы } вар CountryName: String { вернуть foodItems.countryName.capitalized } вар foodPrice: Int { return Int(foodItems.foodPrice) } вар foodCalories: Int { return Int(foodItems.foodCalories) } вар foodImage: String { вернуть foodItems.foodImage } вар isSelected: Bool { получать { вернуть foodItems.isSelected } набор { foodItems.isSelected = новое значение } } вар isFavourited: Bool { получать { вернуть foodItems.isFavourited } набор { foodItems.isFavourited = новое значение } } } класс FoodItemData: ObservableObject { @Published var userData: [FoodItemsViewModel] в этом() { пользовательские данные = [ FoodItemsViewModel(foodItems: FoodItems(foodName: «India Food 1», CountryName: «Indian», foodPrice: 500, foodCalories: 100, foodImage: «IndiaFood1», isSelected: false, isFavourited: false)), FoodItemsViewModel(foodItems: FoodItems(foodName: «India Food 2», CountryName: «Indian», foodPrice: 600, foodCalories: 90, foodImage: «IndiaFood2», isSelected: false, isFavourited: false)), FoodItemsViewModel(foodItems: FoodItems(foodName: «USA Food 1», CountryName: «Chineese», foodPrice: 1000, foodCalories: 80, foodImage: «USAFood1», isSelected: false, isFavourited: false)), FoodItemsViewModel(foodItems: FoodItems(foodName: «USA Food 2», CountryName: «Chineese», foodPrice: 900, foodCalories: 68, foodImage: «USAFood2», isSelected: false, isFavourited: false)), FoodItemsViewModel(foodItems: FoodItems(foodName: "Русская еда 1", странаName: "Русская", foodPrice: 1200, foodCalories: 79, foodImage: "russianFood1", isSelected: false, isFavourited: false)), FoodItemsViewModel(foodItems: FoodItems(foodName: "Русская еда 2", CountryName: "Русская", foodPrice: 1100, foodCalories: 200, foodImage: "russianFood2", isSelected: false, isFavourited: false)), FoodItemsViewModel(foodItems: FoodItems(foodName: «Немецкая еда 1», CountryName: «Немецкий», foodPrice: 1100, foodCalories: 190, foodImage: «Немецкая еда1», isSelected: false, isFavourited: false)), FoodItemsViewModel(foodItems: FoodItems(foodName: «Немецкая еда 2», CountryName: «Немецкий», foodPrice: 1100, foodCalories: 90, foodImage: «Немецкая еда2», isSelected: false, isFavourited: false)), ] } } Я получаю следующие ошибки:
Невозможно преобразовать значение типа «[String: [FoodItemsViewModel]]» в ожидаемый тип аргумента «Привязка»
Невозможно преобразовать значение типа «Binding» в ожидаемый тип аргумента «FoodItemData». Есть предложения?
Я хотел бы показать пример списка групп
