SwiftUI - сортировка отображаемого файла JSON в SwiftUI с разделами, либо по разделам, либо отсортированными - PullRequest
0 голосов
/ 13 марта 2020

У меня есть JSON файл со следующим содержимым:

[
{
   "id":"s1",
   "group":"Fruits",
   "items":[
      {
         "id":1,
         "name":"Apple"
      },
      {
         "id":2,
         "name":"Pineapple"
      },
   ]
},
{
   "id":"s2",
   "group":"Vegetables",
   "items":[
      {
         "id":3,
         "name":"Carots"
      },
      {
         "id":4,
         "name":"Cucumber"
      }
   ]
},
]

Я хотел бы дать пользователю 2 варианта:

  • отобразить их в своих группах с разделами
  • показать все отсортированные овощи и фрукты

Вот два фрагмента кода и результаты:

// sorted in sections
List {
        ForEach(itemData) { section in
            Section(header: Text(section.group)) {
                ForEach(section.items) { item in
                    ItemRow(item: item)
                }
            }
        }
    }

Результат отсортирован по разделам, как и ожидалось:

Фрукты

  • Яблоко
  • Ананас

Овощи

  • Картошки
  • Огурец

    // items without sections
    List {
        ForEach(itemData) { section in
            ForEach(section.items) { item in
                ItemRow(item: item)
            }
        }
    }
    

Результат, как и ожидалось, не отсортирован:

  • Яблоко
  • Ананас
  • Карот
  • Огурец

Как отсортировать и отобразить второй вариант по «имени»?

1 Ответ

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

попробуйте это: (я не знаю, как вы называли свою переменную, поэтому я назвал ее «имя». Замените ее на имя вашей переменной)

List {
            ForEach(itemData.sorted { $0.name < $1.name }) { section in
                Section(header: Text(section.group)) {
                    ForEach(section.items.sorted { $0.name < $1.name }) { item in
                        ItemRow(item: item)
                    }
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...