显示Observable Object SwiftUI中的列表



我正在尝试解码一些JSON并将其打印到列表中,当前收到此错误消息,

ForEach,Int,Text>count(626(!=其初始计数(0(。ForEach(_:content:)应仅用于常量数据。相反,使数据符合Identifiable或使用ForEach(_:id:content:)并提供显式id

我可以通过访问结果[0]打印特定的票证但我无法将所有结果返回到视图。

这是我的ListView

struct WOListView: View {
@EnvironmentObject var ticketData:ControlCenter

var body: some View {
VStack {
Text(String(self.ticketData.jsonData?.result[0].ticketID?.ticketID ?? 0))
List{
ForEach(0 ..< (self.ticketData.jsonData?.result.count ?? 0)) {
Text(String(self.ticketData.jsonData?.result[$0].ticketID?.ticketID ?? 0))
}
}
}
}
}

struct WOListView_Previews: PreviewProvider {
static var previews: some View {
WOListView().environmentObject(ControlCenter())
}
}

WorkOrderResults.swift

struct WorkOrderResults: Codable{
var result:[Result]
enum CodingKeys:String, CodingKey{
case result = "Result"
}
struct Result:Codable{
var ticketID:TicketID?
var summary:Summary?
var status:Status?
var catagory:Catagory?
enum CodingKeys:String, CodingKey{
case ticketID = "1"
case summary = "22"
case status = "96"
case catagory = "164"
}
struct TicketID:Codable {
var ticketID:Int?
enum CodingKeys: String, CodingKey{
case ticketID = "Value"
}
}

在这里找到了我的问题的答案!视图未在嵌套foreach循环中重新绘制!

将WOListView更改为如下。。。

var body: some View {
VStack {
Text(String(self.ticketData.jsonData?.result[0].ticketID?.ticketID ?? 0))

ForEach(0 ..< (self.ticketData.jsonData?.result.count ?? 0), id: .self) {
Text(String(self.ticketData.jsonData?.result[$0].ticketID?.ticketID ?? 0))

}
}
}

最新更新