SwiftUI - 从嵌套数组中列出对象

Posted

技术标签:

【中文标题】SwiftUI - 从嵌套数组中列出对象【英文标题】:SwiftUI - List objects from nested array 【发布时间】:2019-10-22 19:42:14 【问题描述】:

我正在尝试在嵌套数组中显示对象值。下面是我想在列表元素中显示的数据模型和详细信息页面。

// 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 元素的标题和区域并将它们显示在列表中。

【问题讨论】:

那个解决方案有效吗? 是的,确实如此。但是我在另一个 NavigationView 中有一个嵌套的 NavigationView,但我想我可以弄清楚。 【参考方案1】:

问题是您没有为 NavigationLink 指定目标字段

暂时你可以用这样的东西进行测试:

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

【讨论】:

以上是关于SwiftUI - 从嵌套数组中列出对象的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 SwiftUI 视图中的嵌套数组调用

如何在 Swift UI 中将嵌套的 JSON 值显示到选取器视图中?

在 NavigationLink 的嵌套 NavigationView 中列出核心数据对象的正确方法

从嵌套结构 swift ui 创建列表

如何在 swift 4.1 和 xcode 9.3 中使用 JSONDecoder 解码嵌套的 JSON 数组和对象?

SwiftUI - 从 Swift 类启动的可观察对象不会更新 ContentView() 上的 @ObservedObject