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 - 从嵌套数组中列出对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift UI 中将嵌套的 JSON 值显示到选取器视图中?
在 NavigationLink 的嵌套 NavigationView 中列出核心数据对象的正确方法
如何在 swift 4.1 和 xcode 9.3 中使用 JSONDecoder 解码嵌套的 JSON 数组和对象?
SwiftUI - 从 Swift 类启动的可观察对象不会更新 ContentView() 上的 @ObservedObject