显示来自可观察对象SwiftUI的列表

问题描述 投票:0回答:1

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

ForEach,Int,Text>计数(626)!=其初始计数(0)。 ForEach(_:content:)仅应用于constant数据。而是使数据符合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"
            }
        }
json list swiftui codable
1个回答
0
投票

在这里找到了我的问题的答案!view-is-not-rerendered-in-nested-foreach-loop

将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))


                }
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.