简体   繁体   中英

SwiftUI - List objects from nested array

I'm trying to display the object values in a nested array. Below is my data model and details page I'd like to display in a list element.

// 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))
    }
}

The error I'm getting is "Type of expression is ambiguous without more context" I'm just looking to access the title and area of the Venue element and display them in the list.

The issue is that you didn't specify the destination field for the NavigationLink

For the time being you can test with something like this:

List(self.venues) { ven in
    NavigationLink(destination: Text("Go here")) {
        HStack {
            Text(ven.title)
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM