SwiftUI Array - Ignore nil Value - PullRequest
       0

SwiftUI Array - Ignore nil Value

0 голосов
/ 04 февраля 2020

У меня есть JSON файл, который я импортировал. Все записи в файле json имеют элемент, представляющий собой массив, состоящий из 1–3 элементов. Это приводит к сбою списка, поскольку есть некоторые записи, которые имеют одну запись, а другие записи могут иметь 2 или 3. Когда я специально ссылаюсь на элемент 0, приложение запускается, но если я go на элемент 2 или 3, приложение ожидаемо вылетает. Есть ли способ, которым я могу получить приложение, чтобы игнорировать значения ноль и запустить. Пример JSON Файл

[  
    {
        "id": 1,
       "tla":"ABR",
       "name":"Abbey Road",
       "lines": ["Dockland Light"]
    },
    {
       "id": 2,
       "tla":"ACT",
       "name":"Acton Town",
       "lines": ["District", "Piccadilly"]
    },
    {
       "id": 3,
       "tla":"ALD",
       "name":"Aldgate",
       "lines": ["Hammersmith", "Metropolitan"]
    }
]

Цель состоит в том, чтобы перечислить все строки независимо от того, состоят ли строки из 1, 2 или 3

List {


                ForEach(self.allStations.dataStructure,id: \.id) { TubeLines in


                    Text("\(TubeLines.lines[0])")
                    .foregroundColor(Color.blue)

                }


        }

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020
List {
    ForEach(self.allStations.dataStructure,id: \.id) { TubeLines in
        ForEach(TubeLines.lines, id: \.self) { line in
                    Text("\(line)")
                    .foregroundColor(Color.blue)
        }

        }
}

Как это?

0 голосов
/ 04 февраля 2020

Я бы использовал ForEach l oop с индексом и подсчитывал элементы каждого массива. Жесткое кодирование индексов массивов просто напрашивается на неприятности. Примерно так может работать:

ForEach(0..<array.count) { i in
      Text("\(self.array[i])")
        .foregroundColor(Color.blue)
    }

Я вытащил это из этого ответа здесь Получить индекс в ForEach в SwiftUI

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...