类型为[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
屏幕的值类型
没有成员元素
,但查看我的结构,我可以在那里看到它。myforeach
可以深入到的范围是否有限制
这里是我得到错误的地方
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
withscreen.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 ?? "")
}