Показать список из наблюдаемого объекта SwiftUI - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь декодировать некоторые JSON и распечатать их в виде списка, в настоящее время получаю это сообщение об ошибке,

ForEach, Int, Text> count (626)! = Его начальный счет (0) , ForEach(_:content:) следует использовать только для констант данных. Вместо этого приведите данные в соответствие Identifiable или используйте ForEach(_:id:content:) и предоставьте явный id!

. Я могу напечатать указанный билет c, получив доступ к результату [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"
            }
        }

1 Ответ

0 голосов
/ 17 марта 2020

Нашел ответ на мой вопрос здесь! view-is-not-rerendered-in-nested-foreach-l oop!

Измените 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))


                }
            }
        }
...