类型为[x]的SwiftUI值没有成员[y],但结构具有该成员

类型为[x]的SwiftUI值没有成员[y],但结构具有该成员,swiftui,Swiftui,我得到一个错误,屏幕的值类型没有成员元素,但查看我的结构,我可以在那里看到它。myforeach可以深入到的范围是否有限制 这里是我得到错误的地方 ForEach(remedydata?.remedy.content.screens.elements ?? []) { remedy in 如果我删除元素我没有任何问题 我的状态设置为 @State var remedydata: Welcome? = nil 我的结构如下所示 // MARK: - Welcome struct Welcome

我得到一个错误,
屏幕的值类型
没有成员
元素
,但查看我的结构,我可以在那里看到它。my
foreach
可以深入到的范围是否有限制

这里是我得到错误的地方

ForEach(remedydata?.remedy.content.screens.elements ?? []) { remedy in
如果我删除
元素
我没有任何问题

我的状态设置为

@State var remedydata: Welcome? = nil
我的结构如下所示

// MARK: - Welcome
struct Welcome: Codable {
    let remedy: Remedy
}

// MARK: - Remedy
struct Remedy: Codable {
    let id, tenantID: String
    let version: Int
    let title, remedyClientID, createdAt, remedyDescription: String
    let enabled: Bool
    let trigger: Trigger
    let requiredHostCapabilities: [RequiredHostCapability]
    let localizedStrings: [LocalizedString]
    let content: Content
    let actor: String

    enum CodingKeys: String, CodingKey {
        case id
        case tenantID = "tenantId"
        case version, title
        case remedyClientID = "remedyClientId"
        case createdAt
        case remedyDescription = "description"
        case enabled, trigger, requiredHostCapabilities, localizedStrings, content, actor
    }
}

// MARK: - Content
struct Content: Codable {
    let serializationVersion: Int
    let screens: [Screen]
}

// MARK: - Screen
struct Screen: Codable, Identifiable {
    let id: Int
    let title: String
    let elements: [Element]
}

// MARK: - Element
struct Element: Codable, Identifiable {
    let id = UUID()
    let tag: Tag
    let text: String
    let action: Action?

您不能执行
remedydata?.rememy.content.screens.elements
,因为
remedydydata?.remedy.content.screens
是一个数组。在问题中,您在多个
屏幕
中有多个
元素
,这意味着您有两个选项:

  • 显示特定
    屏幕的每个
    元素
  • 为每个
    屏幕显示特定的
    元素
要“为特定的
屏幕显示每个
元素
”:

要“为每个
屏幕显示特定的
元素
”:


您不能执行
remedydata?.rememy.content.screens.elements
,因为
remedydydata?.remedy.content.screens
是一个数组。您是否希望使用
remedydata?.rememy.content.screens
,然后您可以在
ForEach
中获取
元素,这很有意义。我试图进入
元素
。然后我会显式地从数组中调用我想要的项吗?我不知道你想要什么。是否要在不同的行上显示某个
屏幕
的每个
元素
?或者您想在不同的行上显示每个
屏幕中的一些(或每个)
元素
?如果您只想访问
ForEach
中的
元素,请使用
ForEach(remedydata?.rememy.content.screens???[]){screen in
with
screen.elements
。哦,对不起,我正试图进入
Element
中的
text
,但是您在多个
screen
中有多个
Element
。我不确定您想从哪一个方向开始
ForEach(remedydata?.remedy.content.screens.first?.elements ?? []) { element in
    Text(element.text)
}
ForEach(remedydata?.remedy.content.screens ?? []) { screen in
    Text(screen.elements.first?.text ?? "")
}