SwiftUI - список объектов из вложенного массива

Я пытаюсь отобразить значения объекта во вложенном массиве. Ниже приведена моя модель данных и страница сведений, которую я хотел бы отобразить в элементе списка.

// Passports.swift //

import Foundation
import SwiftUI

struct Passports: Identifiable {
    let id : Int
    let passportPremium: Bool
    let passportActive: Bool
    let passportTitle: String
    let passportDates: String
    let venues: [Venue]
    }

struct Venue: Identifiable {

    let id = UUID()
    let title : String
    let venueArea: String
    let venueItems: [venueItem]
}

struct venueItem {
    let title: String
    let productDescription: String
    let productPrice: Double
    let productType: String
    let newStatus: Bool
    let diningPlan: Bool
    let kidFriendly: Bool
    let vegetarian: Bool
    let glutenFree: Bool
    let featuredProduct: Bool
    let containsAlcohol: Bool
}


extension Passports {
    static func all() -> [Passports] {
        return [
            Passports (
                id: 1001,
                passportPremium: false,
                passportActive: true,
                passportTitle : "Passport Title Example",
                passportDates: "October 20 - November 3, 2019",
                venues: [
                    Venue (
                        title: "Venue Name",
                        venueArea: "Germany",
                        venueItems: [
                                venueItem (
                                title: "Potato Dumpling",
                                productDescription: "Potato Dumpling with Mushroom Sauce",
                                productPrice: 0.00,
                                productType: "Food",
                                newStatus: false,
                                mealPlan: false,
                                kidApproved: true,
                                vegetarian: false,
                                glutenFree: false,
                                featuredProduct: false,
                                containsAlcohol: false
                            ),
                            venueItem (
                                title: "Pork Schnitzel",
                                productDescription: "Pork Schnitzel with Mushroom Sauce and Spaetzle",
                                productPrice: 0.00,
                                productType: "Food",
                                newStatus: false,
                                mealPlan: false,
                                kidApproved: false,
                                vegetarian: false,
                                glutenFree: false,
                                featuredProduct: false,
                                containsAlcohol: false
                            )
])
]
            )

        ]

    }

}

// PassportDetails.swift //

import SwiftUI



struct PassportDetails: View {

    var passportTitle: String
    var venues: [Venue]

    var venueProd: [venueItem]



    var body: some View {

        NavigationView {
            List(self.venues) { ven in
                NavigationLink () {
                HStack {
                        Text(ven.title)
                    }
                }
            }
        }.navigationBarTitle(Text(passportTitle))
    }
}

Я получаю сообщение об ошибке: «Тип выражения неоднозначен без дополнительного контекста». Я просто хочу получить доступ к заголовку и области элемента Venue и отобразить их в списке.


person Jason Tremain    schedule 22.10.2019    source источник
comment
Это решение сработало?   -  person 39fredy    schedule 23.10.2019
comment
Да, это так. Однако у меня есть вложенный NavigationView в другой NavigationView, но я думаю, что могу это понять.   -  person Jason Tremain    schedule 23.10.2019


Ответы (1)


Проблема в том, что вы не указали поле назначения для NavigationLink

Пока вы можете протестировать примерно так:

List(self.venues) { ven in
    NavigationLink(destination: Text("Go here")) {
        HStack {
            Text(ven.title)
        }
    }
}
person 39fredy    schedule 22.10.2019