【问题标题】:Display a list from Observable Object SwiftUI显示来自 Observable Object SwiftUI 的列表
【发布时间】:2020-03-17 15:51:47
【问题描述】:

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

ForEach, Int, Text> 计数 (626) != 其初始计数 (0)。 ForEach(_:content:) 只能用于常量数据。而是将数据符合Identifiable 或使用ForEach(_:id:content:) 并提供明确的id

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

这是我的列表视图

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】:

    在这里找到了我的问题的答案! 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))
    
    
                    }
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      相关资源
      最近更新 更多